图书介绍
自己动手实现Lua 虚拟机 编译器和标准库2025|PDF|Epub|mobi|kindle电子书版本百度云盘下载

- 张秀宏著 著
- 出版社: 北京:机械工业出版社
- ISBN:9787111610229
- 出版时间:2018
- 标注页数:414页
- 文件大小:35MB
- 文件页数:430页
- 主题词:游戏程序-程序设计
PDF下载
下载说明
自己动手实现Lua 虚拟机 编译器和标准库PDF格式电子书版下载
下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!
(文件页数 要大于 标注页数,上中下等多册电子书除外)
注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具
图书目录
第一部分 准备3
第1章 准备工作3
1.1 准备开发环境3
1.1.1 操作系统3
1.1.2 安装Lua4
1.1.3 安装Go4
1.2 准备目录结构4
1.3 本章小结6
第二部分 Lua虚拟机和Lua API9
第2章 二进制chunk9
2.1 什么是二进制chunk10
2.2 luac命令介绍11
2.2.1 编译Lua源文件11
2.2.2 查看二进制chunk13
2.3 二进制chunk格式15
2.3.1 数据类型16
2.3.2 总体结构17
2.3.3 头部18
2.3.4 函数原型22
2.4 解析二进制chunk27
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 API49
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 State57
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 表相关API125
7.3.1 Get方法126
7.3.2 Set方法129
7.4 表相关指令131
7.4.1 NEWTABLE131
7.4.2 GETTABLE133
7.4.3 SETTABLE135
7.4.4 SETLIST136
7.5 测试本章代码138
7.6 本章小结140
第8章 函数调用141
8.1 函数调用介绍141
8.2 函数调用栈143
8.2.1 调用帧实现144
8.2.2 调用栈实现145
8.3 函数调用API147
8.3.1 Load()148
8.3.2 Call()149
8.4 函数调用指令152
8.4.1 CLOSURE152
8.4.2 CALL153
8.4.3 RETURN157
8.4.4 VARARG158
8.4.5 TAILCALL159
8.4.6 SELF160
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 扩展LuaAPI169
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章 闭包和Upvalue183
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 GETUPVAL195
10.3.2 SETUPVAL196
10.3.3 GETTABUP197
10.3.4 SETTABUP199
10.3.5 JMP200
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 扩展LuaAPI217
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 扩展LuaAPI228
12.2.3 实现next()函数229
12.3 通用for循环指令229
12.4 测试本章代码232
12.5 本章小结234
第13章 异常和错误处理235
13.1 异常和错误处理介绍235
13.2 异常和错误处理API237
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 辅助API355
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 协程API396
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
热门推荐
- 3317282.html
- 1966217.html
- 825346.html
- 3198393.html
- 3257464.html
- 3808257.html
- 1025081.html
- 2266727.html
- 3838081.html
- 290517.html
- http://www.ickdjs.cc/book_563913.html
- http://www.ickdjs.cc/book_1308218.html
- http://www.ickdjs.cc/book_2230709.html
- http://www.ickdjs.cc/book_633517.html
- http://www.ickdjs.cc/book_2063386.html
- http://www.ickdjs.cc/book_3854224.html
- http://www.ickdjs.cc/book_3098470.html
- http://www.ickdjs.cc/book_3361069.html
- http://www.ickdjs.cc/book_2350002.html
- http://www.ickdjs.cc/book_1323434.html