1本表明Lua保持基本原理的书籍 經典的纯c语言项目分析 第一线开发者倾情打造出 Lua是这种可置入、轻巧、迅速、功能齐全的开发语言,应用比较普遍,关键用游戏中行业。另一个,根据Nginx的OpenResty都是应用Lua来撰写脚本制作的,许多网络服务器(如Redis)也适用应用Lua来撰写脚本制作。 做为一种问世早已超出20年的語言,它在设计方案上是十分克服的。以Lua 5.1.4版本号而言,其c编译器再加附近的库函数等也就但是千多行的编码量,而假如再开展精减,只必须弄懂关键的好几千行编码就就行了。 另一个,做为一种以纯C编码撰写的新项目,Lua编码幽美、构造机构紧凑型,是教材般經典的c语言新项目。 这书探讨了Lua的结构设计,最先解读了数据结构、字符数组及其表种类的保持基本原理,然后探讨了虚拟机的保持,探讨了垃圾分类回收、控制模块保持、热更新、协程等的保持基本原理。 这书适用下列用户: ● 期待可以深化掌握Lua內部保持基本原理的客户; ● 对编程语言设计方案很感兴趣的用户。这书根据Lua 5.1.4版本号探讨了Lua語言的结构设计,本书共有三一部分:前一部分解读数据结构(如通用性数据是怎样表达的)、字符数组及其表种类的保持基本原理;正中间一部分是这书关键的一部分,关键探讨了虚拟机的保持;最后一部分探讨了垃圾分类回收、控制模块保持、热更新、协程等的保持基本原理。
目录
- 第1章 概述 1
- 1.1 前世今生 1
- 1.2 源码组织 5
- 1.3 Lua虚拟机工作流程 6
- 第一部分 基础数据类型
- 第2章 Lua中的数据类型 10
- 2.1 C语言中实现通用数据结构的一般做法 10
- 2.2 Lua通用数据结构的实现 11
- 第3章 字符串 16
- 3.1 概述 16
- 3.2 字符串实现 18
- 第4章 表 24
- 4.1 数据结构 24
- 4.2 操作算法 26
- 4.2.1 查找 26
- 4.2.2 新增元素 27
- 4.2.3 迭代 33
- 4.2.4 取长度操作 33
- 第二部分 虚拟机
- 第5章 Lua虚拟机 36
- 5.1 Lua执行过程概述 36
- 5.2 数据结构与栈 43
- 5.3 指令的解析 46
- 5.4 指令格式 47
- 5.5 指令的执行 53
- 5.6 调试工具 55
- 5.6.1 GDB调试 55
- 5.6.2 使用ChunkSpy 57
- 第6章 指令的解析与执行 61
- 6.1 Lua词法 61
- 6.2 赋值类指令 64
- 6.2.1 局部变量 64
- 6.2.2 全局变量 70
- 6.3 表相关的操作指令 72
- 6.3.1 创建表 72
- 6.3.2 查询表 78
- 6.3.3 元表的实现原理 79
- 6.4 函数相关的操作指令 84
- 6.4.1 相关数据结构 85
- 6.4.2 函数的定义 90
- 6.4.3 函数的调用与返回值的处理 94
- 6.4.4 调用成员函数 99
- 6.4.5 UpValue与闭包 100
- 6.5 数值计算类指令 105
- 6.6 关系逻辑类指令 107
- 6.6.1 相关指令 108
- 6.6.2 理论基础 108
- 6.6.3 相关数据结构及函数 111
- 6.6.4 关系类指令 114
- 6.6.5 逻辑类指令 117
- 6.7 循环类指令 121
- 6.7.1 理论基础 122
- 6.7.2 for循环指令 122
- 6.7.3 其他循环 129
- 第三部分 独立功能的实现
- 第7章 GC算法 132
- 7.1 原理 132
- 7.2 数据结构 135
- 7.3 具体流程 138
- 7.3.1 新创建对象 138
- 7.3.2 初始化阶段 140
- 7.3.3 扫描标记阶段 142
- 7.3.4 回收阶段 147
- 7.3.5 结束阶段 148
- 7.4 进度控制 150
- 第8章 环境与模块 152
- 8.1 环境相关的变量 152
- 8.2 模块 157
- 8.2.1 模块的加载 157
- 8.2.2 模块的编写 159
- 8.2.3 模块的热更新原理 161
- 第9章 调试器工作原理 163
- 9.1 钩子功能 163
- 9.2 得到当前程序信息 164
- 9.3 打印变量 165
- 9.4 查看文件内容 166
- 9.5 断点的添加 166
- 9.6 查看当前堆栈信息 167
- 9.7 step和next指令的实现 167
- 第10章 异常处理 169
- 10.1 原理 169
- 10.2 Lua实现 170
- 第11章 协程 175
- 11.1 概念 175
- 11.2 相关的API 177
- 11.3 实现 180
- 11.4 对称协程和非对称协程 184
- 附录A 参考资料 187