Lua解释器构建:从虚拟机到编译器

Lua解释器构建:从虚拟机到编译器

查阅电子书
手机扫码
  • 微信扫一扫

    关注微信公众号

因版权原因待上架

编辑推荐

一本深入Lua解释器内部设计与实现的书籍。

内容简介

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 反编译工具

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语法分析器基础

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语法

Lua解释器构建:从虚拟机到编译器是2023年由机械工业出版社出版,作者吴尹杰。

得书感谢您对《Lua解释器构建:从虚拟机到编译器》关注和支持,如本书内容有不良信息或侵权等情形的,请联系本网站。

购买这本书

你可能喜欢
Kubernetes从入门到实践 电子书
结合示例代码,系统讲述Kubernetes的主要功能和核心组件,有助于读者迅速提升运维技能。
MySQL从入门到精通 电子书
本书适合任何想学习MySQL的读者,无论您是否从事计算机相关行业,是否接触过MySQL,均可通过学习快速掌握MySQL的开发方法和技巧。
MATLAB从入门到精通 电子书
零基础、入门级的讲解 无论读者是否从事计算机相关行业,是否接触过MATLAB,是否使用MATLAB开发过项目,都能从本书中获益。 超多、实用、专业的范例和项目 本书结合实际工作中的范例,逐一讲解MATLAB的各种知识和技术。之后,还以实际开发项目帮助读者综合运用所学知识,从而提升实战经验,积累项目经验。 随时检测自己的学习成果 每章首页给出了“本章要点”,方便读者明确学习方向。 细致入微、贴心提示 本书在讲解过程中使用了“提示”“注意”“技巧”等小栏目,帮助读者在学习过程中更清楚地理解基本概念,掌握相关操作,并轻松获取实战技巧。 全程同步教学视频 涵盖本书所有知识点,详细讲解每个范例和项目的开发过程及关键点,帮助读者更轻松地掌握书中所有的MATLAB 程序设计知识。 超多电子资源大放送 赠送大量电子资源,包括 11 小时全程同步教学视频、188 个范例源码、全书配套 PPT、85 个经典程序源代码、MATLAB 快捷键速查手册、MATLAB 函数速查手册、MATLAB 编程实例 100 例、MATLAB 常见问题解答电子书、MATLAB 中常见的程序出错问题及解答电子书、数学建模常用到的 MATLAB 函数电子书。
Oracle从入门到精通 电子书
(1)全程同步视频教学,手机扫码,随看随学 (2)Oracle项目实战教学录像 (3)Java项目实战教学录像 (4)全书配套范例源码与实战练习答案 (5)Oracle常见面试题、Oracle常见函数汇总等相关电子书
Kotlin从基础到实战 电子书
本书采用传统基础教材的写法,以知识点贯穿本书,并为每个知识点配置案例,要求知识点讲解清楚,案例设计合理,分析简洁明了,实用性强。然后通过一个坦克大战项目整合基础知识,最后讲解Kotlin高级知识。本书的内容大致分为3个部分,第1部分是Kotlin基础知识,第2部分是坦克大战项目,第3部分是Kotlin高级知识。