Lua設(shè)計(jì)與實(shí)現(xiàn)
定 價(jià):49 元
叢書名:圖靈原創(chuàng)
- 作者:codedump
- 出版時(shí)間:2017/9/1
- ISBN:9787115465375
- 出 版 社:人民郵電出版社
- 中圖法分類:TP317.6
- 頁(yè)碼:
- 紙張:膠版紙
- 版次:1
- 開(kāi)本:16開(kāi)
本書基于Lua 5.1.4版本討論了Lua語(yǔ)言的設(shè)計(jì)原理,全書共分三部分:前部分講解數(shù)據(jù)結(jié)構(gòu)(如通用數(shù)據(jù)是如何表示的)、字符串以及表類型的實(shí)現(xiàn)原理;中間部分是本書重要的部分,主要討論了虛擬機(jī)的實(shí)現(xiàn);第三部分討論了垃圾回收、模塊實(shí)現(xiàn)、熱更新、協(xié)程等的實(shí)現(xiàn)原理。
一本揭示Lua實(shí)現(xiàn)原理的圖書
經(jīng)典的純C語(yǔ)言項(xiàng)目分析
一線開(kāi)發(fā)人員傾力打造
Lua是一種可嵌入、輕量、快速、功能強(qiáng)大的腳本語(yǔ)言,使用較為廣泛,主要用在游戲領(lǐng)域。另外,基于Nginx的OpenResty也是使用Lua來(lái)編寫腳本的,很多服務(wù)器(如Redis)也支持使用Lua來(lái)編寫腳本。
作為一門誕生已經(jīng)超過(guò)20年的語(yǔ)言,它在設(shè)計(jì)上是非?酥频。以Lua 5.1.4版本來(lái)說(shuō),其解釋器加上周邊的庫(kù)函數(shù)等也就不過(guò)一萬(wàn)多行的代碼量,而如果再進(jìn)行精簡(jiǎn),只需要吃透核心的幾千行代碼就可以了。
另外,作為一門以純C代碼編寫的項(xiàng)目,Lua代碼優(yōu)美、結(jié)構(gòu)組織緊湊,是教科書般經(jīng)典的C語(yǔ)言項(xiàng)目。
本書討論了Lua的設(shè)計(jì)原理,首先講解了數(shù)據(jù)結(jié)構(gòu)、字符串以及表類型的實(shí)現(xiàn)原理,接著討論了虛擬機(jī)的實(shí)現(xiàn),討論了垃圾回收、模塊實(shí)現(xiàn)、熱更新、協(xié)程等的實(shí)現(xiàn)原理。
本書適用于以下讀者:
● 希望能夠進(jìn)一步了解Lua內(nèi)部實(shí)現(xiàn)原理的用戶;
● 對(duì)程序語(yǔ)言設(shè)計(jì)感興趣的讀者。
網(wǎng)名codedump,長(zhǎng)期從事互聯(lián)網(wǎng)后端服務(wù)開(kāi)發(fā)工作。曾經(jīng)在網(wǎng)易等公司從事游戲服務(wù)器后臺(tái)開(kāi)發(fā),在網(wǎng)絡(luò)游戲開(kāi)發(fā)工作期間接觸到使用C 編寫服務(wù)核心引擎和使用Lua腳本編寫游戲邏輯的技術(shù)組合后,對(duì)Lua產(chǎn)生了濃厚的興趣,遂開(kāi)始研究其實(shí)現(xiàn)原理,陸續(xù)公布于網(wǎng)絡(luò)。個(gè)人博客:www.codedump.info。
第1章 概述1
1.1 前世今生1
1.2 源碼組織5
1.3 Lua虛擬機(jī)工作流程6
第一部分 基礎(chǔ)數(shù)據(jù)類型
第2章 Lua中的數(shù)據(jù)類型10
2.1 C語(yǔ)言中實(shí)現(xiàn)通用數(shù)據(jù)結(jié)構(gòu)的一般做法10
2.2 Lua通用數(shù)據(jù)結(jié)構(gòu)的實(shí)現(xiàn)11
第3章 字符串16
3.1 概述16
3.2 字符串實(shí)現(xiàn)18
第4章 表24
4.1 數(shù)據(jù)結(jié)構(gòu)24
4.2 操作算法26
4.2.1 查找26
4.2.2 新增元素27
4.2.3 迭代33
4.2.4 取長(zhǎng)度操作33
第二部分 虛擬機(jī)
第5章 Lua虛擬機(jī)36
5.1 Lua執(zhí)行過(guò)程概述36
5.2 數(shù)據(jù)結(jié)構(gòu)與棧43
5.3 指令的解析46
5.4 指令格式47
5.5 指令的執(zhí)行53
5.6 調(diào)試工具55
5.6.1 GDB調(diào)試55
5.6.2 使用ChunkSpy57
第6章 指令的解析與執(zhí)行61
6.1 Lua詞法61
6.2 賦值類指令64
6.2.1 局部變量64
6.2.2 全局變量70
6.3 表相關(guān)的操作指令72
6.3.1 創(chuàng)建表72
6.3.2 查詢表78
6.3.3 元表的實(shí)現(xiàn)原理79
6.4 函數(shù)相關(guān)的操作指令84
6.4.1 相關(guān)數(shù)據(jù)結(jié)構(gòu)85
6.4.2 函數(shù)的定義90
6.4.3 函數(shù)的調(diào)用與返回值的處理94
6.4.4 調(diào)用成員函數(shù)99
6.4.5 UpValue與閉包100
6.5 數(shù)值計(jì)算類指令105
6.6 關(guān)系邏輯類指令107
6.6.1 相關(guān)指令108
6.6.2 理論基礎(chǔ)108
6.6.3 相關(guān)數(shù)據(jù)結(jié)構(gòu)及函數(shù)111
6.6.4 關(guān)系類指令114
6.6.5 邏輯類指令117
6.7 循環(huán)類指令121
6.7.1 理論基礎(chǔ)122
6.7.2 for循環(huán)指令122
6.7.3 其他循環(huán)129
第三部分 獨(dú)立功能的實(shí)現(xiàn)
第7章 GC算法132
7.1 原理132
7.2 數(shù)據(jù)結(jié)構(gòu)135
7.3 具體流程138
7.3.1 新創(chuàng)建對(duì)象138
7.3.2 初始化階段140
7.3.3 掃描標(biāo)記階段142
7.3.4 回收階段147
7.3.5 結(jié)束階段148
7.4 進(jìn)度控制150
第8章 環(huán)境與模塊152
8.1 環(huán)境相關(guān)的變量152
8.2 模塊157
8.2.1 模塊的加載157
8.2.2 模塊的編寫159
8.2.3 模塊的熱更新原理161
第9章 調(diào)試器工作原理163
9.1 鉤子功能163
9.2 得到當(dāng)前程序信息164
9.3 打印變量165
9.4 查看文件內(nèi)容166
9.5 斷點(diǎn)的添加166
9.6 查看當(dāng)前堆棧信息167
9.7 step和next指令的實(shí)現(xiàn)167
第10章 異常處理169
10.1 原理169
10.2 Lua實(shí)現(xiàn)170
第11章 協(xié)程175
11.1 概念175
11.2 相關(guān)的API177
11.3 實(shí)現(xiàn)180
11.4 對(duì)稱協(xié)程和非對(duì)稱協(xié)程184
附錄A 參考資料187