自己动手实现Lua 虚拟机 编译器和标准库PDF电子书下载
- 电子书积分:14 积分如何计算积分?
- 作 者:张秀宏著
- 出 版 社:北京:机械工业出版社
- 出版年份:2018
- ISBN:9787111610229
- 页数:414 页
第一部分 准备 3
第1章 准备工作 3
1.1 准备开发环境 3
1.1.1 操作系统 3
1.1.2 安装Lua 4
1.1.3 安装Go 4
1.2 准备目录结构 4
1.3 本章小结 6
第二部分 Lua虚拟机和Lua API 9
第2章 二进制chunk 9
2.1 什么是二进制chunk 10
2.2 luac命令介绍 11
2.2.1 编译Lua源文件 11
2.2.2 查看二进制chunk 13
2.3 二进制chunk格式 15
2.3.1 数据类型 16
2.3.2 总体结构 17
2.3.3 头部 18
2.3.4 函数原型 22
2.4 解析二进制chunk 27
2.4.1 读取基本数据类型 28
2.4.2 检查头部 29
2.4.3 读取函数原型 30
2.5 测试本章代码 33
2.6 本章小结 36
第3章 指令集 37
3.1 指令集介绍 37
3.2 指令编码格式 38
3.2.1 编码模式 38
3.2.2 操作码 39
3.2.3 操作数 40
3.2.4 指令表 41
3.3 指令解码 42
3.4 测试本章代码 44
3.5 本章小结 47
第4章 Lua API 49
4.1 Lua API介绍 49
4.2 Lua栈 51
4.2.1 Lua数据类型和值 51
4.2.2 栈索引 54
4.2.3 定义luaStack结构体 54
4.3 Lua State 57
4.3.1 定义LuaState接口 57
4.3.2 定义luaState结构体 58
4.3.3 基础栈操纵方法 59
4.3.4 Push方法 64
4.3.5 Access方法 65
4.4 测试本章代码 69
4.5 本章小结 70
第5章 Lua运算符 71
5.1 Lua运算符介绍 71
5.2 自动类型转换 75
5.3 扩展LuaState接口 79
5.3.1 Arith()方法 80
5.3.2 Compare()方法 83
5.3.3 Len()方法 85
5.3.4 Concat()方法 86
5.4 测试本章代码 87
5.5 本章小结 88
第6章 虚拟机雏形 89
6.1 添加LuaVM接口 89
6.1.1 定义LuaVM接口 91
6.1.2 改造luaState结构体 92
6.1.3 实现LuaVM接口 93
6.2 实现Lua虚拟机指令 94
6.2.1 移动和跳转指令 94
6.2.2 加载指令 96
6.2.3 算术运算指令 101
6.2.4 长度和拼接指令 103
6.2.5 比较指令 106
6.2.6 逻辑运算指令 107
6.2.7 for循环指令 110
6.3 指令分派 113
6.4 测试本章代码 115
6.5 本章小结 118
第7章 表 119
7.1 表介绍 119
7.2 表内部实现 121
7.3 表相关API 125
7.3.1 Get方法 126
7.3.2 Set方法 129
7.4 表相关指令 131
7.4.1 NEWTABLE 131
7.4.2 GETTABLE 133
7.4.3 SETTABLE 135
7.4.4 SETLIST 136
7.5 测试本章代码 138
7.6 本章小结 140
第8章 函数调用 141
8.1 函数调用介绍 141
8.2 函数调用栈 143
8.2.1 调用帧实现 144
8.2.2 调用栈实现 145
8.3 函数调用API 147
8.3.1 Load() 148
8.3.2 Call() 149
8.4 函数调用指令 152
8.4.1 CLOSURE 152
8.4.2 CALL 153
8.4.3 RETURN 157
8.4.4 VARARG 158
8.4.5 TAILCALL 159
8.4.6 SELF 160
8.4.7 扩展LuaVM接口 162
8.4.8 改进SETLIST指令 163
8.5 测试本章代码 164
8.6 本章小结 166
第9章 Go函数调用 167
9.1 Go函数登场 167
9.1.1 添加Go函数类型 168
9.1.2 扩展LuaAPI 169
9.1.3 调用Go函数 170
9.2 Lua注册表 172
9.2.1 添加注册表 172
9.2.2 操作注册表 173
9.3 全局环境 175
9.3.1 使用API操作全局环境 175
9.3.2 在Lua里访问全局环境 178
9.4 测试本章代码 179
9.5 本章小结 181
第10章 闭包和Upvalue 183
10.1 闭包和Upvalue介绍 183
10.1.1 背景知识 183
10.1.2 Upvalue介绍 185
10.1.3 全局变量 187
10.2 Upvalue底层支持 189
10.2.1 修改closure结构体 189
10.2.2 Lua闭包支持 191
10.2.3 Go闭包支持 192
10.3 Upvalue相关指令 195
10.3.1 GETUPVAL 195
10.3.2 SETUPVAL 196
10.3.3 GETTABUP 197
10.3.4 SETTABUP 199
10.3.5 JMP 200
10.4 测试本章代码 202
10.5 本章小结 203
第11章 元编程 205
11.1 元表和元方法介绍 205
11.1.1 元表 206
11.1.2 元方法 206
11.2 支持元表 207
11.3 调用元方法 208
11.3.1 算术元方法 209
11.3.2 长度元方法 211
11.3.3 拼接元方法 211
11.3.4 比较元方法 212
11.3.5 索引元方法 214
11.3.6 函数调用元方法 216
11.4 扩展LuaAPI 217
11.4.1 GetMetatable() 218
11.4.2 SetMetatable() 218
11.5 测试本章代码 219
11.6 本章小结 222
第12章 迭代器 223
12.1 迭代器介绍 223
12.2 next()函数 226
12.2.1 修改luaTable结构体 227
12.2.2 扩展LuaAPI 228
12.2.3 实现next()函数 229
12.3 通用for循环指令 229
12.4 测试本章代码 232
12.5 本章小结 234
第13章 异常和错误处理 235
13.1 异常和错误处理介绍 235
13.2 异常和错误处理API 237
13.2.1 Error() 238
13.2.2 PCall() 239
13.3 error()和pcall()函数 240
13.4 测试本章代码 241
13.5 本章小结 242
第三部分 Lua语法和编译器 245
第14章 词法分析 245
14.1 编译器介绍 245
14.2 Lua词法介绍 247
14.3 实现词法分析器 251
14.3.1 定义Token类型 252
14.3.2 空白字符 254
14.3.3 注释 256
14.3.4 分隔符和运算符 256
14.3.5 长字符串字面量 258
14.3.6 短字符串字面量 259
14.3.7 数字字面量 262
14.3.8 标识符和关键字 263
14.4 LookAhead()和其他方法 264
14.5 测试本章代码 265
14.6 本章小结 267
第15章 抽象语法树 269
15.1 抽象语法树介绍 269
15.2 Chunk和块 270
15.3 语句 272
15.3.1 简单语句 273
15.3.2 while和repeat语句 273
15.3.3 if语句 274
15.3.4 数值for循环语句 275
15.3.5 通用for循环语句 275
15.3.6 局部变量声明语句 276
15.3.7 赋值语句 277
15.3.8 非局部函数定义语句 278
15.3.9 局部函数定义语句 279
15.4 表达式 280
15.4.1 简单表达式 280
15.4.2 运算符表达式 281
15.4.3 表构造表达式 281
15.4.4 函数定义表达式 282
15.4.5 前缀表达式 283
15.4.6 圆括号表达式 284
15.4.7 表访问表达式 284
15.4.8 函数调用表达式 285
15.5 本章小结 286
第16章 语法分析 287
16.1 语法分析介绍 287
16.1.1 歧义 288
16.1.2 前瞻和回溯 289
16.1.3 解析方式 290
16.2 解析块 290
16.3 解析语句 293
16.3.1 简单语句 294
16.3.2 if语句 296
16.3.3 for循环语句 297
16.3.4 局部变量声明和函数定义语句 299
16.3.5 赋值和函数调用语句 300
16.3.6 非局部函数定义语句 302
16.4 解析表达式 303
16.4.1 运算符表达式 304
16.4.2 非运算符表达式 306
16.4.3 函数定义表达式 307
16.4.4 表构造表达式 308
16.4.5 前缀表达式 310
16.4.6 圆括号表达式 311
16.4.7 函数调用表达式 312
16.4.8 表达式优化 313
16.5 测试本章代码 315
16.6 本章小结 316
第17章 代码生成 317
17.1 定义funcInfo结构体 317
17.1.1 常量表 318
17.1.2 寄存器分配 319
17.1.3 局部变量表 320
17.1.4 Break表 323
17.1.5 Upvalue表 324
17.1.6 字节码 325
17.1.7 其他信息 327
17.2 编译块 327
17.3 编译语句 329
17.3.1 简单语句 330
17.3.2 while和repeat语句 331
17.3.3 if语句 333
17.3.4 for循环语句 334
17.3.5 局部变量声明语句 335
17.3.6 赋值语句 337
17.4 编译表达式 339
17.4.1 函数定义表达式 340
17.4.2 表构造表达式 341
17.4.3 运算符表达式 343
17.4.4 名字和表访问表达式 345
17.4.5 函数调用表达式 346
17.5 生成函数原型 347
17.6 使用编译器 349
17.7 测试本章代码 350
17.8 本章小结 350
第四部分 Lua标准库 353
第18章 辅助API和基础库 353
18.1 Lua标准库介绍 353
18.2 辅助API 355
18.2.1 增强版方法 357
18.2.2 加载方法 358
18.2.3 参数检查方法 359
18.2.4 标准库开启方法 360
18.3 基础库 361
18.3.1 基础库介绍 362
18.3.2 基础库实现 362
18.4 测试本章代码 365
18.5 本章小结 366
第19章 工具库 367
19.1 数学库 367
19.2 表库 369
19.3 字符串库 372
19.4 UTF-8库 374
19.5 OS库 376
19.6 本章小结 379
第20章 包和模块 381
20.1 包和模块介绍 381
20.2 实现包库 386
20.3 测试本章代码 391
20.4 本章小结 392
第21章 协程 393
21.1 协程介绍 393
21.2 协程API 396
21.2.1 支持线程类型 396
21.2.2 支持协程操作 398
21.3 实现协程库 400
21.4 测试本章代码 403
21.5 本章小结 404
附录A Lua虚拟机指令集 405
附录B Lua语法EBNF描述 407
后记 409
- 《区块链DAPP开发入门、代码实现、场景应用》李万胜著 2019
- 《虚拟流域环境理论技术研究与应用》冶运涛蒋云钟梁犁丽曹引等编著 2019
- 《智能制造高技能人才培养规划丛书 ABB工业机器人虚拟仿真教程》(中国)工控帮教研组 2019
- 《国之重器出版工程 云化虚拟现实技术与应用》熊华平 2019
- 《现代汉语空间位置关系虚拟运动研究》姚京晶著 2018
- 《大数据项目管理 从规划到实现》(美)特德·马拉斯卡(Ted Malaska),(美)乔纳森·塞德 2020
- 《虚拟现实与人工智能技术的综合应用》潘晓霞著 2018
- 《新时代背景下碳泄漏的法律规制 理论逻辑与实现路径》姜明 2019
- 《先进模糊智能复合经典PID控制理论与应用及其Matlab实现》刘经纬,朱敏玲,周瑞 2016
- 《数字信号处理原理与实现》刘泉,郭志强主编 2020
- 《NLP英语教学法》成宇宏著 2019
- 《水浒解“毒”》郭相宏著 2019
- 《牛头山植物》张秀岳,金孝锋,吴棣飞主编 2019
- 《经济报道新思路》张秀平,卢良主编;新闻出版报编 1992
- 《愿你慢慢长大 爸爸写给女儿的二十封信》李映宏著 2019
- 《读红楼·学管理》李谋宏著 2019
- 《话有引力》(日)美浓部达宏著;夏言译 2020
- 《还原素描古典美》(日)卯野和宏著 2019
- 《PYTHON极简讲义 一本书入门数据分析与机器学习》张玉宏著 2020
- 《从情景关系看唐宋词境的流变》魏学宏著 2018
- 《指向核心素养 北京十一学校名师教学设计 英语 七年级 上 配人教版》周志英总主编 2019
- 《北京生态环境保护》《北京环境保护丛书》编委会编著 2018
- 《高等教育双机械基础课程系列教材 高等学校教材 机械设计课程设计手册 第5版》吴宗泽,罗圣国,高志,李威 2018
- 《指向核心素养 北京十一学校名师教学设计 英语 九年级 上 配人教版》周志英总主编 2019
- 《高等院校旅游专业系列教材 旅游企业岗位培训系列教材 新编北京导游英语》杨昆,鄢莉,谭明华 2019
- 《中国十大出版家》王震,贺越明著 1991
- 《近代民营出版机构的英语函授教育 以“商务、中华、开明”函授学校为个案 1915年-1946年版》丁伟 2017
- 《新工业时代 世界级工业家张毓强和他的“新石头记”》秦朔 2019
- 《智能制造高技能人才培养规划丛书 ABB工业机器人虚拟仿真教程》(中国)工控帮教研组 2019
- 《AutoCAD机械设计实例精解 2019中文版》北京兆迪科技有限公司编著 2019