书籍详情
Lua设计与实现
作者:codedump 著
出版社:人民邮电出版社
出版时间:2017-08-01
ISBN:9787115465375
定价:¥49.00
购买这本书可以去
内容简介
本书基于Lua 5.1.4版本讨论了Lua语言的设计原理,全书共分三部分:前部分讲解数据结构(如通用数据是如何表示的)、字符串以及表类型的实现原理;中间部分是本书重要的部分,主要讨论了虚拟机的实现;第三部分讨论了垃圾回收、模块实现、热更新、协程等的实现原理。
作者简介
网名codedump,长期从事互联网后端服务开发工作。曾经在网易等公司从事游戏服务器后台开发,在网络游戏开发工作期间接触到使用C++编写服务核心引擎和使用Lua脚本编写游戏逻辑的技术组合后,对Lua产生了浓厚的兴趣,遂开始研究其实现原理,陆续公布于网络。个人博客:www.codedump.info。
目录
第1章 概述\t1
1.1 前世今生\t1
1.2 源码组织\t5
1.3 Lua虚拟机工作流程\t6
第一部分 基础数据类型
第2章 Lua中的数据类型\t10
2.1 C语言中实现通用数据结构的一般做法\t10
2.2 Lua通用数据结构的实现\t11
第3章 字符串\t16
3.1 概述\t16
3.2 字符串实现\t18
第4章 表\t24
4.1 数据结构\t24
4.2 操作算法\t26
4.2.1 查找\t26
4.2.2 新增元素\t27
4.2.3 迭代\t33
4.2.4 取长度操作\t33
第二部分 虚拟机
第5章 Lua虚拟机\t36
5.1 Lua执行过程概述\t36
5.2 数据结构与栈\t43
5.3 指令的解析\t46
5.4 指令格式\t47
5.5 指令的执行\t53
5.6 调试工具\t55
5.6.1 GDB调试\t55
5.6.2 使用ChunkSpy\t57
第6章 指令的解析与执行\t61
6.1 Lua词法\t61
6.2 赋值类指令\t64
6.2.1 局部变量\t64
6.2.2 全局变量\t70
6.3 表相关的操作指令\t72
6.3.1 创建表\t72
6.3.2 查询表\t78
6.3.3 元表的实现原理\t79
6.4 函数相关的操作指令\t84
6.4.1 相关数据结构\t85
6.4.2 函数的定义\t90
6.4.3 函数的调用与返回值的处理\t94
6.4.4 调用成员函数\t99
6.4.5 UpValue与闭包\t100
6.5 数值计算类指令\t105
6.6 关系逻辑类指令\t107
6.6.1 相关指令\t108
6.6.2 理论基础\t108
6.6.3 相关数据结构及函数\t111
6.6.4 关系类指令\t114
6.6.5 逻辑类指令\t117
6.7 循环类指令\t121
6.7.1 理论基础\t122
6.7.2 for循环指令\t122
6.7.3 其他循环\t129
第三部分 独立功能的实现
第7章 GC算法\t132
7.1 原理\t132
7.2 数据结构\t135
7.3 具体流程\t138
7.3.1 新创建对象\t138
7.3.2 初始化阶段\t140
7.3.3 扫描标记阶段\t142
7.3.4 回收阶段\t147
7.3.5 结束阶段\t148
7.4 进度控制\t150
第8章 环境与模块\t152
8.1 环境相关的变量\t152
8.2 模块\t157
8.2.1 模块的加载\t157
8.2.2 模块的编写\t159
8.2.3 模块的热更新原理\t161
第9章 调试器工作原理\t163
9.1 钩子功能\t163
9.2 得到当前程序信息\t164
9.3 打印变量\t165
9.4 查看文件内容\t166
9.5 断点的添加\t166
9.6 查看当前堆栈信息\t167
9.7 step和next指令的实现\t167
第10章 异常处理\t169
10.1 原理\t169
10.2 Lua实现\t170
第11章 协程\t175
11.1 概念\t175
11.2 相关的API\t177
11.3 实现\t180
11.4 对称协程和非对称协程\t184
附录A 参考资料\t187
1.1 前世今生\t1
1.2 源码组织\t5
1.3 Lua虚拟机工作流程\t6
第一部分 基础数据类型
第2章 Lua中的数据类型\t10
2.1 C语言中实现通用数据结构的一般做法\t10
2.2 Lua通用数据结构的实现\t11
第3章 字符串\t16
3.1 概述\t16
3.2 字符串实现\t18
第4章 表\t24
4.1 数据结构\t24
4.2 操作算法\t26
4.2.1 查找\t26
4.2.2 新增元素\t27
4.2.3 迭代\t33
4.2.4 取长度操作\t33
第二部分 虚拟机
第5章 Lua虚拟机\t36
5.1 Lua执行过程概述\t36
5.2 数据结构与栈\t43
5.3 指令的解析\t46
5.4 指令格式\t47
5.5 指令的执行\t53
5.6 调试工具\t55
5.6.1 GDB调试\t55
5.6.2 使用ChunkSpy\t57
第6章 指令的解析与执行\t61
6.1 Lua词法\t61
6.2 赋值类指令\t64
6.2.1 局部变量\t64
6.2.2 全局变量\t70
6.3 表相关的操作指令\t72
6.3.1 创建表\t72
6.3.2 查询表\t78
6.3.3 元表的实现原理\t79
6.4 函数相关的操作指令\t84
6.4.1 相关数据结构\t85
6.4.2 函数的定义\t90
6.4.3 函数的调用与返回值的处理\t94
6.4.4 调用成员函数\t99
6.4.5 UpValue与闭包\t100
6.5 数值计算类指令\t105
6.6 关系逻辑类指令\t107
6.6.1 相关指令\t108
6.6.2 理论基础\t108
6.6.3 相关数据结构及函数\t111
6.6.4 关系类指令\t114
6.6.5 逻辑类指令\t117
6.7 循环类指令\t121
6.7.1 理论基础\t122
6.7.2 for循环指令\t122
6.7.3 其他循环\t129
第三部分 独立功能的实现
第7章 GC算法\t132
7.1 原理\t132
7.2 数据结构\t135
7.3 具体流程\t138
7.3.1 新创建对象\t138
7.3.2 初始化阶段\t140
7.3.3 扫描标记阶段\t142
7.3.4 回收阶段\t147
7.3.5 结束阶段\t148
7.4 进度控制\t150
第8章 环境与模块\t152
8.1 环境相关的变量\t152
8.2 模块\t157
8.2.1 模块的加载\t157
8.2.2 模块的编写\t159
8.2.3 模块的热更新原理\t161
第9章 调试器工作原理\t163
9.1 钩子功能\t163
9.2 得到当前程序信息\t164
9.3 打印变量\t165
9.4 查看文件内容\t166
9.5 断点的添加\t166
9.6 查看当前堆栈信息\t167
9.7 step和next指令的实现\t167
第10章 异常处理\t169
10.1 原理\t169
10.2 Lua实现\t170
第11章 协程\t175
11.1 概念\t175
11.2 相关的API\t177
11.3 实现\t180
11.4 对称协程和非对称协程\t184
附录A 参考资料\t187
猜您喜欢