第1章 Lua解释器概述/
1.1 Lua解释器/
1.1.1 Lua解释器的整体架构/
1.1.2 Lua解释器的运行机制/
1.2 Lua虚拟机/
1.2.1 虚拟机简介/
1.2.2 虚拟机指令的编码方式/
1.2.3 虚拟机指令集/
1.3 Lua编译器/
1.3.1 Lua的词法分析器/
1.3.2 Lua的语法分析器/
1.4 从0开发一个Lua解释器:dummylua项目/
1.4.1 项目简介/
1.4.2 项目架构说明/
第2章 Lua虚拟机/
2.1 Lua虚拟机基础知识/
2.1.1 基本类型定义/
2.1.2 虚拟机全局状态——global_State/
2.1.3 虚拟机的线程结构——lua_State/
2.1.4 虚拟机中执行函数的基础——CallInfo结构/
2.1.5 C函数在虚拟机线程中的调用流程/
2.1.6 虚拟机异常处理机制/
2.1.7 dummylua项目的虚拟机基础实现/
2.2 为虚拟机添加垃圾回收机制/
2.2.1 标记清除算法/
2.2.2 增量式标记清除算法/
2.2.3 dummylua项目的垃圾回收机制实现/
2.3 Lua虚拟机的字符串/
2.3.1 Lua字符串概述/
2.3.2 Lua字符串结构/
2.3.3 字符串的哈希运算/
2.3.4 短字符串与内部化/
2.3.5 长字符串与惰性哈希/
2.3.6 Lua-5.2的Hash DoS攻击/
2.3.7 dummylua的字符串实现/
2.4 Lua虚拟机的表/
2.4.1 Lua表功能概述/
2.4.2 Lua表的基本数据结构/
2.4.3 表的初始化/
2.4.4 键值的哈希运算/
2.4.5 查找元素/
2.4.6 值的更新与插入/
2.4.7 调整表的大小/
2.4.8 表遍历/
2.4.9 dummylua的表实现/
第3章 Lua脚本的编译与虚拟机指令运行流程 /
3.1 第一个编译并运行脚本的例子:让Lua说“hello world”/
3.2 Lua的整体编译和运行流程/
3.3 虚拟机如何运行编译后的指令/
3.4 虚拟机输出“hello world”的例子/
3.5 反编译工具——protodump/
3.5.1 protodump工具简介/
3.5.2 使用protodump反编译Lua的字节码/
3.5.3 反编译结果分析/
3.6 标准库加载流程/
3.7 Lua内置编译器补充说明/
3.7.1 EBNF简介/
3.7.2 本章定义的EBNF/
3.7.3 词法分析器设计与实现/
3.7.4 语句和表达式/
3.7.5 语法分析器的基础设计与实现/
3.8 让dummylua能够编译并运行“hello world”脚本/
第4章 Lua编译器/
4.1 Lua词法分析器 /
4.1.1 词法分析器简介/
4.1.2 词法分析器基本数据结构/
4.1.3 词法分析器的接口设计/
4.1.4 词法分析器的初始化流程/
4.1.5 token识别流程/
4.1.6 一个测试用例/
4.1.7 dummylua的词法分析器实现/
4.2 Lua语法分析器基础——expr语句编译流程/
4.2.1 语法分析器的主要工作/
4.2.2 实现的语法/
4.2.3 语法分析器基本数据结构/
4.2.4 编译逻辑与EBNF的关联/
4.2.5 exprstat的逻辑结构/
4.2.6 expr的构造与编译/
4.2.7 suffixedexp构造与编译/
4.2.8 assignment构造和编译/
4.2.9 为dummylua添加编译exprstat的功能/
4.3 完整的Lua语法分析器/
4.3.1 Lua的语句块/
4.3.2 local语句编译流程/
4.3.3 doend语句编译流程/
4.3.4 if语句编译流程/
4.3.5 while语句编译流程/
4.3.6 repeat语句编译流程/
4.3.7 for语句编译流程/
4.3.8 break语句编译流程/
4.3.9 function语句编译流程/
4.3.10 return语句编译流程 /
4.3.11 dummylua的完整语法分析器实现/
第5章 Lua解释器的其他基础特性/
5.1 元表/
5.1.1 元表简介/
5.1.2 元表的_index域/
5.1.3 元表的_newindex域/
5.1.4 双目运算事件/
5.1.5 dummylua的元表实现/
5.2 用户数据/
5.2.1 用户数据的数据结构/
5.2.2 用户数据的接口/
5.2.3 用户数据的垃圾回收处理/
5.2.4 用户数据的user domain域内部的堆内存清理/
5.2.5 用户数据的测试用例/
5.2.6 dummylua的用户数据实现/
5.3 上值/
5.3.1 上值的定义/
5.3.2 Lua函数的探索/
5.3.3 上值的生成/
5.3.4 开放上值和已关闭上值/
5.3.5 dummylua的上值实现/
5.4 弱表 /
5.4.1 弱表的定义/
5.4.2 弱表的用途/
5.4.3 弱键/
5.4.4 弱值/
5.4.5 完全弱引用/
5.4.6 dummylua的弱表实现/
5.5 require机制 /
5.5.1 require功能简述/
5.5.2 package初始化/
5.5.3 require运作流程/
5.5.4 dummylua的require机制实现/
第6章 dummylua开发案例:俄罗斯方块/
6.1 案例简介/
6.2 案例代码结构/
6.3 编译与运行/
附录/
附录A Lua虚拟机指令集/
附录B Lua的EBNF语法/
· · · · · · (
收起)
4 有用 alittleboy 2023-05-21 02:36:44 广东
我自己是做游戏开发行业的,一直都在用lua语言做上层业务逻辑的开发,随着对lua语言用的越来越多,也想对这门语言做更深入的学习,方便做业务框架层的整体性能优化和基础通用模块的封装调整。查阅官方文档和官方推荐的lua编程语言书籍都只是对上层接口的简单介绍,之前就听说过作者打算出一本详细说明lua语言底层实现的书,一直都很期待,现在书已出版,赶紧买了一本来读,第一遍读虽然略微有点难度,但这本书对编译器... 我自己是做游戏开发行业的,一直都在用lua语言做上层业务逻辑的开发,随着对lua语言用的越来越多,也想对这门语言做更深入的学习,方便做业务框架层的整体性能优化和基础通用模块的封装调整。查阅官方文档和官方推荐的lua编程语言书籍都只是对上层接口的简单介绍,之前就听说过作者打算出一本详细说明lua语言底层实现的书,一直都很期待,现在书已出版,赶紧买了一本来读,第一遍读虽然略微有点难度,但这本书对编译器和解释器的原理介绍的非常全面,涵盖了Lua语言的语法和语义,并提供了对解释器和编译器实现的深入探讨。本书也很注重实践,提供了一个简单但又详实的示例项目帮助读者更容易的理解lua的底层原理实现,帮助读者更好地理解和掌握Lua语言和解释器/编译器的实现。对lua语言的底层原理感兴趣的话可以一试。 (展开)
2 有用 豆友FMaI_c8lSo 2023-05-21 23:44:09 湖北
这本书是一本非常实用和有趣的技术书籍。本书从实际的需求出发,讲解了如何构建一个完整的Lua解释器,包括虚拟机和编译器等核心组件。作者深入浅出地讲解了Lua的内部机制,从而让读者更好地理解和掌握Lua语言的本质。 本书的编写风格非常清晰明了,作者注重实践和案例的讲解,通过实际的代码演示,让读者可以更加深入地理解Lua解释器的构建过程。同时,本书还提供了不错的示例项目并给出了开源源码,让读者可以通过实... 这本书是一本非常实用和有趣的技术书籍。本书从实际的需求出发,讲解了如何构建一个完整的Lua解释器,包括虚拟机和编译器等核心组件。作者深入浅出地讲解了Lua的内部机制,从而让读者更好地理解和掌握Lua语言的本质。 本书的编写风格非常清晰明了,作者注重实践和案例的讲解,通过实际的代码演示,让读者可以更加深入地理解Lua解释器的构建过程。同时,本书还提供了不错的示例项目并给出了开源源码,让读者可以通过实践来加深对Lua解释器的理解和掌握。已经简单读了一遍,个人感觉这是一本非常值得一读的技术书籍,无论是对于Lua开发者还是对于编译原理和虚拟机原理感兴趣的读者,都具有很高的参考价值。本书对于Lua解释器的构建过程进行了深入的剖析,为读者提供了一条系统、清晰的学习路径。如果你试着吃透此书,你将受益匪浅! (展开)
0 有用 菜瓜 2024-04-15 15:10:01 广东
很幸运买到了这本书,通过这本书我学到了很多lua底层的知识,拿到了心仪的offer
5 有用 夏末秋初 2023-04-22 21:21:36 广东
这是一本非常实用、且对正在研究脚本语言和编译器构建的开发人员有很大帮助的书籍,读者不仅可以学到如何构建基于Lua的解释器,同时也能够从中获得编写高质量软件所需的编程技术、方法和最佳实践。
5 有用 robot 2023-03-16 10:08:32 北京
这本书写的非常不错,详细的介绍了lua的里里外外,真心值得去细读一下~,如果是从事lua相关代码编写的工作者,相信读完以后会让你使用lua更加游刃有余的~