舉報

會員
Lua解釋器構(gòu)建:從虛擬機(jī)到編譯器
最新章節(jié):
文后
Lua是一門設(shè)計精簡、功能強(qiáng)大的腳本語言。本書將Lua解釋器拆解,使用C語言,一步一步構(gòu)建能夠正確運行的Lua解釋器。本書共6章,分別為Lua解釋器概述,Lua虛擬機(jī),Lua腳本的編譯與虛擬機(jī)指令運行流程,Lua編譯器,Lua的解釋器的其他基礎(chǔ)特征,dummylua開發(fā)案例:俄羅斯方塊。閱讀本書,并不需要讀者事先精通有關(guān)編譯原理的知識,書中會嘗試用簡潔的語言,向讀者介紹相關(guān)的具體內(nèi)容。Lua解釋器構(gòu)建:從虛擬機(jī)到編譯器面向?qū)ua內(nèi)部以及解釋器的設(shè)計和實現(xiàn)感興趣的讀者,并要求讀者對C語言和Lua有一定的了解和使用經(jīng)驗。
目錄(138章)
倒序
- 封面
- 版權(quán)信息
- 作者簡介
- 序
- 前言
- 第1章 Lua解釋器概述
- 1.1 Lua解釋器
- 1.1.1 Lua解釋器的整體架構(gòu)
- 1.1.2 Lua解釋器的運行機(jī)制
- 1.2 Lua虛擬機(jī)
- 1.2.1 虛擬機(jī)簡介
- 1.2.2 虛擬機(jī)指令的編碼方式
- 1.2.3 虛擬機(jī)指令集
- 1.3 Lua編譯器
- 1.3.1 Lua的詞法分析器
- 1.3.2 Lua的語法分析器
- 1.4 從0開發(fā)一個Lua解釋器:dummylua項目
- 1.4.1 項目簡介
- 1.4.2 項目架構(gòu)說明
- 第2章 Lua虛擬機(jī)
- 2.1 Lua虛擬機(jī)基礎(chǔ)知識
- 2.1.1 基本類型定義
- 2.1.2 虛擬機(jī)全局狀態(tài)——global_State
- 2.1.3 虛擬機(jī)的線程結(jié)構(gòu)——lua_State
- 2.1.4 虛擬機(jī)中執(zhí)行函數(shù)的基礎(chǔ)——CallInfo結(jié)構(gòu)
- 2.1.5 C函數(shù)在虛擬機(jī)線程中的調(diào)用流程
- 2.1.6 虛擬機(jī)異常處理機(jī)制
- 2.1.7 dummylua項目的虛擬機(jī)基礎(chǔ)實現(xiàn)
- 2.2 為虛擬機(jī)添加垃圾回收機(jī)制
- 2.2.1 標(biāo)記清除算法
- 2.2.2 增量式標(biāo)記清除算法
- 2.2.3 dummylua項目的垃圾回收機(jī)制實現(xiàn)
- 2.3 Lua虛擬機(jī)的字符串
- 2.3.1 Lua字符串概述
- 2.3.2 Lua字符串結(jié)構(gòu)
- 2.3.3 字符串的哈希運算
- 2.3.4 短字符串與內(nèi)部化
- 2.3.5 長字符串與惰性哈希
- 2.3.6 Lua-5.2的Hash DoS攻擊
- 2.3.7 dummylua的字符串實現(xiàn)
- 2.4 Lua虛擬機(jī)的表
- 2.4.1 Lua表功能概述
- 2.4.2 Lua表的基本數(shù)據(jù)結(jié)構(gòu)
- 2.4.3 表的初始化
- 2.4.4 鍵值的哈希運算
- 2.4.5 查找元素
- 2.4.6 值的更新與插入
- 2.4.7 調(diào)整表的大小
- 2.4.8 表遍歷
- 2.4.9 dummylua的表實現(xiàn)
- 第3章 Lua腳本的編譯與虛擬機(jī)指令運行流程
- 3.1 第一個編譯并運行腳本的例子:讓Lua說“hello world”
- 3.2 Lua的整體編譯和運行流程
- 3.3 虛擬機(jī)如何運行編譯后的指令
- 3.4 虛擬機(jī)輸出“hello world”的例子
- 3.5 反編譯工具——protodump
- 3.5.1 protodump工具簡介
- 3.5.2 使用protodump反編譯Lua的字節(jié)碼
- 3.5.3 反編譯結(jié)果分析
- 3.6 標(biāo)準(zhǔn)庫加載流程
- 3.7 Lua內(nèi)置編譯器補充說明
- 3.7.1 EBNF簡介
- 3.7.2 本章定義的EBNF
- 3.7.3 詞法分析器設(shè)計與實現(xiàn)
- 3.7.4 語句和表達(dá)式
- 3.7.5 語法分析器的基礎(chǔ)設(shè)計與實現(xiàn)
- 3.8 讓dummylua能夠編譯并運行“hello world”腳本
- 第4章 Lua編譯器
- 4.1 Lua詞法分析器
- 4.1.1 詞法分析器簡介
- 4.1.2 詞法分析器基本數(shù)據(jù)結(jié)構(gòu)
- 4.1.3 詞法分析器的接口設(shè)計
- 4.1.4 詞法分析器的初始化流程
- 4.1.5 token識別流程
- 4.1.6 一個測試用例
- 4.1.7 dummylua的詞法分析器實現(xiàn)
- 4.2 Lua語法分析器基礎(chǔ)——expr語句編譯流程
- 4.2.1 語法分析器的主要工作
- 4.2.2 實現(xiàn)的語法
- 4.2.3 語法分析器基本數(shù)據(jù)結(jié)構(gòu)
- 4.2.4 編譯邏輯與EBNF的關(guān)聯(lián)
- 4.2.5 exprstat的邏輯結(jié)構(gòu)
- 4.2.6 expr的構(gòu)造與編譯
- 4.2.7 suffixedexp構(gòu)造與編譯
- 4.2.8 assignment構(gòu)造和編譯
- 4.2.9 為dummylua添加編譯exprstat的功能
- 4.3 完整的Lua語法分析器
- 4.3.1 Lua的語句塊
- 4.3.2 local語句編譯流程
- 4.3.3 do-end語句編譯流程
- 4.3.4 if語句編譯流程
- 4.3.5 while語句編譯流程
- 4.3.6 repeat語句編譯流程
- 4.3.7 for語句編譯流程
- 4.3.8 break語句編譯流程
- 4.3.9 function語句編譯流程
- 4.3.10 return語句編譯流程
- 4.3.11 dummylua的完整語法分析器實現(xiàn)
- 第5章 Lua解釋器的其他基礎(chǔ)特性
- 5.1 元表
- 5.1.1 元表簡介
- 5.1.2 元表的_index域
- 5.1.3 元表的_newindex域
- 5.1.4 雙目運算事件
- 5.1.5 dummylua的元表實現(xiàn)
- 5.2 用戶數(shù)據(jù)
- 5.2.1 用戶數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)
- 5.2.2 用戶數(shù)據(jù)的接口
- 5.2.3 用戶數(shù)據(jù)的垃圾回收處理
- 5.2.4 用戶數(shù)據(jù)的user domain域內(nèi)部的堆內(nèi)存清理
- 5.2.5 用戶數(shù)據(jù)的測試用例
- 5.2.6 dummylua的用戶數(shù)據(jù)實現(xiàn)
- 5.3 上值
- 5.3.1 上值的定義
- 5.3.2 Lua函數(shù)的探索
- 5.3.3 上值的生成
- 5.3.4 開放上值和已關(guān)閉上值
- 5.3.5 dummylua的上值實現(xiàn)
- 5.4 弱表
- 5.4.1 弱表的定義
- 5.4.2 弱表的用途
- 5.4.3 弱鍵
- 5.4.4 弱值
- 5.4.5 完全弱引用
- 5.4.6 dummylua的弱表實現(xiàn)
- 5.5 require機(jī)制
- 5.5.1 require功能簡述
- 5.5.2 package初始化
- 5.5.3 require運作流程
- 5.5.4 dummylua的require機(jī)制實現(xiàn)
- 第6章 dummylua開發(fā)案例:俄羅斯方塊
- 6.1 案例簡介
- 6.2 案例代碼結(jié)構(gòu)
- 6.3 編譯與運行
- 附錄
- 附錄A Lua虛擬機(jī)指令集
- 附錄B Lua的EBNF語法
- 文后 更新時間:2023-06-28 15:31:33
推薦閱讀
- Reactive Programming with Swift
- 算法基礎(chǔ):打開程序設(shè)計之門
- AngularJS Web Application Development Blueprints
- Mastering matplotlib
- MATLAB應(yīng)用與實驗教程
- TypeScript項目開發(fā)實戰(zhàn)
- ArcGIS By Example
- AIRIOT物聯(lián)網(wǎng)平臺開發(fā)框架應(yīng)用與實戰(zhàn)
- Kivy Cookbook
- Web Developer's Reference Guide
- Angular Design Patterns
- Python Projects for Kids
- PHP 7 Programming Blueprints
- Learning Adobe Muse
- LabVIEW虛擬儀器項目開發(fā)與實踐
- OpenCV Computer Vision with Python
- Neural Networks with R
- Mobile Prototyping with Axure 7
- 商業(yè)智能深入淺出:Cognos,Informatica技術(shù)與應(yīng)用
- HTML5+CSS3+JavaScript Web前端開發(fā)案例教程(慕課版)
- Java開發(fā)之道
- PHP入門很輕松(微課超值版)
- Java寶典
- Django項目開發(fā)實戰(zhàn)
- Puppet 5 Essentials(Third Edition)
- Lumion 3D Best Practices
- C#編程寶典(十年典藏版)
- ROS機(jī)器人編程零基礎(chǔ)入門與實踐
- shell腳本基礎(chǔ)教程
- AngularJS Directives