joe 发表于 2022-6-20 14:37:03

Lua源码分析 - 基础篇 - Lua源码的结构和架构图(01)

目录

一、Lua语言简介

二、Lua架构图

三、Lua源码结构

很久很久没有写博客了,一直忙于工作和项目,最近依然想静下来阅读一些好的源码。自从读完了Nginx和Memcache的源码后,对服务器端的基础开源软件的实现原理有了一定的认识,接下来想看看Lua这门精巧的语言是如何实现的。

一、Lua语言简介
Lua是一门用C语言编写的脚本语言,一共1w多行代码,非常的轻巧,适合做web脚本、游戏脚本、物联网等场景下使用。

Lua可以进行独立编程,但是大部分情况下是嵌入到大型语言里面,作为一个库,成为一种脚本编程语言存在。
https://img-blog.csdnimg.cn/2020013114245132.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9pbml0cGhwLmJsb2cuY3Nkbi5uZXQ=,size_16,color_FFFFFF,t_70


百度百科:Lua 是一个小巧的脚本语言。它是巴西里约热内卢天主教大学(Pontifical Catholic University of Rio de Janeiro)里的一个由Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo三人所组成的研究小组于1993年开发的。 其设计目的是为了通过灵活嵌入应用程序中从而为应用程序提供灵活的扩展和定制功能。Lua由标准C编写而成,几乎在所有操作系统和平台上都可以编译,运行。Lua并没有提供强大的库,这是由它的定位决定的。所以Lua不适合作为开发独立应用程序的语言。Lua 有一个同时进行的JIT项目,提供在特定平台上的即时编译功能。

Lua是解释型语言,通过对Lua的语言进行语法解析,然后生成二进制字节码,然后转由C语言进行执行操作。编译型语言,则会进行编译后生成机器码,直接由机器进行执行即可,执行效率会比较高。

二、Lua架构图
这个架构图,是整体读完了Lua的全部源码之后,才画出来的。如果有兴趣阅读Lua源码的同学,可以按照架构图的顺序,逐个模块进行学习。

https://img-blog.csdnimg.cn/20200409172211534.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2luaXRwaHA=,size_16,color_FFFFFF,t_70

三、Lua源码结构
Lua的下载地址:http://www.lua.org/

源码包下载后,我们可以看一下lua-5.3.5/src目录下的代码结构。代码结构基本会分3部分

虚拟机核心功能部分


源代码解析和预编译



内嵌库


每次阅读源码,其实最难的是开始,通过网上各种资料,先把lua的整个目录结构弄明白,幸好lua真的比较小,很容易就能弄明白每个文件是干什么的。接下去就是开始一点一点的啃整个源码的过程了。

啃整个lua语言链路解析过程之前,我会优先把lua周边的库以及虚拟机字节码这块搞明白,然后再开始进行整个解析流程的阅读。
————————————————
版权声明:本文为CSDN博主「老码农zhuli」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/initphp/article/details/82703846

joe 发表于 2022-6-20 16:11:34

lua源码解析——gc实现机制[详细版](一) https://blog.csdn.net/hbhgyt/article/details/123935560

joe 发表于 2022-6-20 16:58:48

将Lua解释器移植到STM32 https://zhuanlan.zhihu.com/p/465318832

joe 发表于 2022-6-20 17:00:24

IBM的 deleloperworks 上有相关的文章:
http://www.ibm.com/developerworks/cn/linux/l-lua.html

joe 发表于 2022-6-20 17:02:55

把Lua移植到stm32上,效果不错! https://bbs.21ic.com/icview-2588282-1-1.html?_dsign=360d88d8

joe 发表于 2022-6-20 17:10:37

Lua C API 的正确用法 https://blog.codingnow.com/2015/05/lua_c_api.html
以及:https://blog.csdn.net/unsv29/article/details/49994507
页: [1]
查看完整版本: Lua源码分析 - 基础篇 - Lua源码的结构和架构图(01)