第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執(zhí)行過程概述\t36
5.2 數據結構與棧\t43
5.3 指令的解析\t46
5.4 指令格式\t47
5.5 指令的執(zhí)行\(zhòng)t53
5.6 調試工具\t55
5.6.1 GDB調試\t55
5.6.2 使用ChunkSpy\t57
第6章 指令的解析與執(zhí)行\(zhòng)t61
6.1 Lua詞法\t61
6.2 賦值類指令\t64
6.2.1 局部變量\t64
6.2.2 全局變量\t70
6.3 表相關的操作指令\t72
6.3.1 創(chuàng)建表\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 循環(huán)類指令\t121
6.7.1 理論基礎\t122
6.7.2 for循環(huán)指令\t122
6.7.3 其他循環(huán)\t129
第三部分 獨立功能的實現
第7章 GC算法\t132
7.1 原理\t132
7.2 數據結構\t135
7.3 具體流程\t138
7.3.1 新創(chuàng)建對象\t138
7.3.2 初始化階段\t140
7.3.3 掃描標記階段\t142
7.3.4 回收階段\t147
7.3.5 結束階段\t148
7.4 進度控制\t150
第8章 環(huán)境與模塊\t152
8.1 環(huán)境相關的變量\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