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