Lua源码揭秘(一)概述

由于工作原因,需要撸一波lua源码。相关的文章有很多,其中就有云风未完成的《Lua源码鉴赏》,以及《Lua GC 的源码剖析》,也是我阅读源码过程中的重要参考。“纸上得来终觉浅,绝知此事要躬行”,于是开一个专栏,专门记录此间的心得。
lua版本是5.1.5,(⊙o⊙)…我们项目里实际上使用的是luajit-2.1(⊙o⊙)…莫名的觉得在读luajit之前应当先读一下对应的原生lua版本,于是就走上了一条奇怪的岔路。(感觉我的技能点越点越偏了,以后还能找到工作吗?/(ㄒoㄒ)/)

文件划分

  1. 虚拟机运转的核心功能
    lapi.c C 语言接口
    ldebug.c Debug 接口
    ldo.c 函数调用以及栈管理
    lfunc.c 函数原型及闭包管理
    lgc.c 垃圾回收
    lmem.c 内存管理接口
    lobject.c 对象操作的一些函数
    lopcodes.c 虚拟机的字节码定义
    lstate.c 全局状态机
    lstring.c 字符串池
    ltable.c 表类型的相关操作
    ltm.c 元方法
    lvm.c 虚拟机
    lzio.c 输入流接口
  2. 源代码解析以及预编译字节码
    lcode.c 代码生成器
    ldump.c 序列化预编译的Lua 字节码
    llex.c 词法分析器
    lparser.c 解析器
    lundump.c 还原预编译的字节码
  3. 内嵌库
    lauxlib.c 库编写用到的辅助函数库
    lbaselib.c 基础库
    ldblib.c Debug 库
    linit.c 内嵌库的初始化
    liolib.c IO 库
    lmathlib.c 数学库
    loadlib.c 动态扩展库管理
    loslib.c OS 库
    lstrlib.c 字符串库
    ltablib.c 表处理库
  4. 可执行的解析器,字节码编译器
    lua.c 解释器
    luac.c 字节码编译器
  5. 其他
    print.c 打印,貌似是开发阶段辅助调试用的。

与云风的分类大致相同,针对不同版本做了些许调整(云风当时的Lua版本为5.2.2)。

本文的最主要的作用是作为一个目录,方便索引后续文章,所以暂时未有太多原创内容~

猜你喜欢

转载自blog.csdn.net/ecidevilin/article/details/78376308