幫助中心 | 我的帳號 | 關於我們

Lua解釋器構建(從虛擬機到編譯器)/電腦前沿技術叢書

  • 作者:吳尹傑|責編:李曉波
  • 出版社:機械工業
  • ISBN:9787111718833
  • 出版日期:2023/01/01
  • 裝幀:平裝
  • 頁數:299
人民幣:RMB 99 元      售價:
放入購物車
加入收藏夾

內容大鋼
    Lua是一門設計精簡、功能強大的腳本語言。本書將Lua解釋器拆解,使用C語言,一步一步構建能夠正確運行的Lua解釋器。本書共6章,分別為Lua解釋器概述,Lua虛擬機,Lua腳本的編譯與虛擬機指令運行流程,Lua編譯器,Lua的解釋器的其他基礎特徵,dummylua開發案例:俄羅斯方塊。閱讀本書,並不需要讀者事先精通有關編譯原理的知識,書中會嘗試用簡潔的語言,向讀者介紹相關的具體內容。
    Lua解釋器構建:從虛擬機到編譯器面向對Lua內部以及解釋器的設計和實現感興趣的讀者,並要求讀者對C語言和Lua有一定的了解和使用經驗。本書免費提供書中配套案例的全部源碼,相關獲取方式見封底。

作者介紹
吳尹傑|責編:李曉波
    吳尹傑,網名Manistein,廣州某遊戲公司服務端技術總監,熱愛電腦技術,喜歡鑽研,熟悉多門編程語言,為知名服務端框架skynet貢獻過多篇核心源碼分析文檔。

目錄

前言
第1章  Lua解釋器概述
  1.1  Lua解釋器
    1.1.1  Lua解釋器的整體架構
    1.1.2  Lua解釋器的運行機制
  1.2  Lua虛擬機
    1.2.1  虛擬機簡介
    1.2.2  虛擬機指令的編碼方式
    1.2.3  虛擬機指令集
  1.3  Lua編譯器
    1.3.1  Lua的詞法分析器
    1.3.2  Lua的語法分析器
  1.4  從0開發一個Lua解釋器:dummylua項目
    1.4.1  項目簡介
    1.4.2  項目架構說明
第2章  Lua虛擬機
  2.1  Lua虛擬機基礎知識
    2.1.1  基本類型定義
    2.1.2  虛擬機全局狀態——global_State
    2.1.3  虛擬機的線程結構——lua_State
    2.1.4  虛擬機中執行函數的基礎——CallInfo結構
    2.1.5  C函數在虛擬機線程中的調用流程
    2.1.6  虛擬機異常處理機制
    2.1.7  dummylua項目的虛擬機基礎實現
  2.2  為虛擬機添加垃圾回收機制
    2.2.1  標記清除演算法
    2.2.2  增量式標記清除演算法
    2.2.3  dummylua項目的垃圾回收機制實現
  2.3  Lua虛擬機的字元串
    2.3.1  Lua字元串概述
    2.3.2  Lua字元串結構
    2.3.3  字元串的哈希運算
    2.3.4  短字元串與內部化
    2.3.5  長字元串與惰性哈希
    2.3.6  Lua-5.2的Hash DoS攻擊
    2.3.7  dummylua的字元串實現
  2.4  Lua虛擬機的表
    2.4.1  Lua表功能概述
    2.4.2  Lua表的基本數據結構
    2.4.3  表的初始化
    2.4.4  鍵值的哈希運算
    2.4.5  查找元素
    2.4.6  值的更新與插入
    2.4.7  調整表的大小
    2.4.8  表遍歷
    2.4.9  dummylua的表實現
第3章  Lua腳本的編譯與虛擬機指令運行流程
  3.1  第一個編譯並運行腳本的例子:讓Lua說「hello world」
  3.2  Lua的整體編譯和運行流程

  3.3  虛擬機如何運行編譯后的指令
  3.4  虛擬機輸出「hello world」的例子
  3.5  反編譯工具——protodump
    3.5.1  protodump工具簡介
    3.5.2  使用protodump反編譯Lua的位元組碼
    3.5.3  反編譯結果分析
  3.6  標準庫載入流程
  3.7  Lua內置編譯器補充說明
    3.7.1  EBNF簡介
    3.7.2  本章定義的EBNF
    3.7.3  詞法分析器設計與實現
    3.7.4  語句和表達式
    3.7.5  語法分析器的基礎設計與實現
  3.8  讓dummylua能夠編譯並運行「hello world」腳本
第4章  Lua編譯器
  4.1  Lua詞法分析器
    4.1.1  詞法分析器簡介
    4.1.2  詞法分析器基本數據結構
    4.1.3  詞法分析器的介面設計
    4.1.4  詞法分析器的初始化流程
    4.1.5  token識別流程
    4.1.6  一個測試用例
    4.1.7  dummylua的詞法分析器實現
  4.2  Lua語法分析器基礎——expr語句編譯流程
    4.2.1  語法分析器的主要工作
    4.2.2  實現的語法
    4.2.3  語法分析器基本數據結構
    4.2.4  編譯邏輯與EBNF的關聯
    4.2.5  exprstat的邏輯結構
    4.2.6  expr的構造與編譯
    4.2.7  suffixedexp構造與編譯
    4.2.8  assignment構造和編譯
    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的完整語法分析器實現
第5章  Lua解釋器的其他基礎特性
  5.1  元表
    5.1.1  元表簡介
    5.1.2  元表的_index域
    5.1.3  元表的_newindex域

    5.1.4  雙目運算事件
    5.1.5  dummylua的元表實現
  5.2  用戶數據
    5.2.1  用戶數據的數據結構
    5.2.2  用戶數據的介面
    5.2.3  用戶數據的垃圾回收處理
    5.2.4  用戶數據的user domain域內部的堆內存清理
    5.2.5  用戶數據的測試用例
    5.2.6  dummylua的用戶數據實現
  5.3  上值
    5.3.1  上值的定義
    5.3.2  Lua函數的探索
    5.3.3  上值的生成
    5.3.4  開放上值和已關閉上值
    5.3.5  dummylua的上值實現
  5.4  弱表
    5.4.1  弱表的定義
    5.4.2  弱表的用途
    5.4.3  弱鍵
    5.4.4  弱值
    5.4.5  完全弱引用
    5.4.6  dummylua的弱表實現
  5.5  require機制
    5.5.1  require功能簡述
    5.5.2  package初始化
    5.5.3  require運作流程
    5.5.4  dummylua的require機制實現
第6章  dummylua開發案例:俄羅斯方塊
  6.1  案例簡介
  6.2  案例代碼結構
  6.3  編譯與運行
附錄
  附錄A  Lua虛擬機指令集
  附錄B  Lua的EBNF語法

  • 商品搜索:
  • | 高級搜索
首頁新手上路客服中心關於我們聯絡我們Top↑
Copyrightc 1999~2008 美商天龍國際圖書股份有限公司 臺灣分公司. All rights reserved.
營業地址:臺北市中正區重慶南路一段103號1F 105號1F-2F
讀者服務部電話:02-2381-2033 02-2381-1863 時間:週一-週五 10:00-17:00
 服務信箱:bookuu@69book.com 客戶、意見信箱:cs@69book.com
ICP證:浙B2-20060032