由于此商品库存有限,请在下单后15分钟之内支付完成,手慢无哦!
100%刮中券,最高50元无敌券,券有效期7天
活动自2017年6月2日上线,敬请关注云钻刮券活动规则更新。
如活动受政府机关指令需要停止举办的,或活动遭受严重网络攻击需暂停举办的,或者系统故障导致的其它意外问题,苏宁无需为此承担赔偿或者进行补偿。
正版 自己动手实现Lua 虚拟机 编译器和标准库 张秀宏 开发环境 目录结构 数据类型 基础栈操纵方法 虚拟机 Go
¥ ×1
商品基本信息 | |
商品名称: | 自己动手实现Lua:虚拟机、编译器和标准库 |
作者: | 张秀宏 |
市场价: | 89.00 |
ISBN号: | 9787111610229 |
版次: | 1-1 |
出版日期: | 2018-10 |
页数: | 412 |
字数: | 150 |
出版社: | 机械工业出版社 |
目录 | |
前言 第一部分 准备 第1章 准备工作 3 1.1 准备开发环境 3 1.1.1 操作系统 3 1.1.2 安装Lua 4 1.1.3 安装Go 4 1.2 准备目录结构 4 1.3 本章小结 6 第二部分 Lua虚拟机和Lua API 第2章 二进制chunk 9 2.1 什么是二进制chunk 10 2.2 luac命令介绍 11 2.2.1 编译Lua源文件 11 2.2.2 查看二进制chunk 13 2.3 二进制chunk格式 15 2.3.1 数据类型 16 2.3.2 总体结构 17 2.3.3 头部 18 2.3.4 函数原型 22 2.4 解析二进制chunk 27 2.4.1 读取基本数据类型 28 2.4.2 检查头部 29 2.4.3 读取函数原型 30 2.5 测试本章代码 33 2.6 本章小结 36 第3章 指令集 37 3.1 指令集介绍 37 3.2 指令编码格式 38 3.2.1 编码模式 38 3.2.2 操作码 39 3.2.3 操作数 40 3.2.4 指令表 41 3.3 指令解码 42 3.4 测试本章代码 44 3.5 本章小结 47 第4章 Lua API 49 4.1 Lua API介绍 49 4.2 Lua栈 51 4.2.1 Lua数据类型和值 51 4.2.2 栈索引 54 4.2.3 定义luaStack结构体 54 4.3 Lua State 57 4.3.1 定义LuaState接口 57 4.3.2 定义luaState结构体 58 4.3.3 基础栈操纵方法 59 4.3.4 Push方法 64 4.3.5 Access方法 65 4.4 测试本章代码 69 4.5 本章小结 70 第5章 Lua运算符 71 5.1 Lua运算符介绍 71 5.2 自动类型转换 75 5.3 扩展LuaState接口 79 5.3.1 Arith()方法 80 5.3.2 Compare()方法 83 5.3.3 Len()方法 85 5.3.4 Concat()方法 86 5.4 测试本章代码 87 5.5 本章小结 88 第6章 虚拟机雏形 89 6.1 添加LuaVM接口 89 6.1.1 定义LuaVM接口 91 6.1.2 改造luaState结构体 92 6.1.3 实现LuaVM接口 93 6.2 实现Lua虚拟机指令 94 6.2.1 移动和跳转指令 94 6.2.2 加载指令 96 6.2.3 算术运算指令 101 6.2.4 长度和拼接指令 103 6.2.5 比较指令 106 6.2.6 逻辑运算指令 107 6.2.7 for循环指令 110 6.3 指令分派 113 6.4 测试本章代码 115 6.5 本章小结 118 第7章 表 119 7.1 表介绍 119 7.2 表内部实现 121 7.3 表相关API 125 7.3.1 Get方法 126 7.3.2 Set方法 129 7.4 表相关指令 131 7.4.1 NEWTABLE 131 7.4.2 GETTABLE 133 7.4.3 SETTABLE 135 7.4.4 SETLIST 136 7.5 测试本章代码 138 7.6 本章小结 140 第8章 函数调用 141 8.1 函数调用介绍 141 8.2 函数调用栈 143 8.2.1 调用帧实现 144 8.2.2 调用栈实现 145 8.3 函数调用API 147 8.3.1 Load() 148 8.3.2 Call() 149 8.4 函数调用指令 152 8.4.1 CLOSURE 152 8.4.2 CALL 153 8.4.3 RETURN 157 8.4.4 VARARG 158 8.4.5 TAILCALL 159 8.4.6 SELF 160 8.4.7 扩展LuaVM接口 162 8.4.8 改进SETLIST指令 163 8.5 测试本章代码 164 8.6 本章小结 166 第9章 Go函数调用 167 9.1 Go函数登场 167 9.1.1 添加Go函数类型 168 9.1.2 扩展Lua API 169 9.1.3 调用Go函数 170 9.2 Lua注册表 172 9.2.1 添加注册表 172 9.2.2 操作注册表 173 9.3 全局环境 175 9.3.1 使用API操作全局环境 175 9.3.2 在Lua里访问全局环境 178 9.4 测试本章代码 179 9.5 本章小结 181 第10章 闭包和Upvalue 183 10.1 闭包和Upvalue介绍 183 10.1.1 背景知识 183 10.1.2 Upvalue介绍 185 10.1.3 全局变量 187 10.2 Upvalue底层支持 189 10.2.1 修改closure结构体 189 10.2.2 Lua闭包支持 191 10.2.3 Go闭包支持 192 10.3 Upvalue相关指令 195 10.3.1 GETUPVAL 195 10.3.2 SETUPVAL 196 10.3.3 GETTABUP 197 10.3.4 SETTABUP 199 10.3.5 JMP 200 10.4 测试本章代码 202 10.5 本章小结 203 第11章 元编程 205 11.1 元表和元方法介绍 205 11.1.1 元表 206 11.1.2 元方法 206 11.2 支持元表 207 11.3 调用元方法 208 11.3.1 算术元方法 209 11.3.2 长度元方法 211 11.3.3 拼接元方法 211 11.3.4 比较元方法 212 11.3.5 索引元方法 214 11.3.6 函数调用元方法 216 11.4 扩展Lua API 217 11.4.1 GetMetatable() 218 11.4.2 SetMetatable() 218 11.5 测试本章代码 219 11.6 本章小结 222 第12章 迭代器 223 12.1 迭代器介绍 223 12.2 next()函数 226 12.2.1 修改luaTable结构体 227 12.2.2 扩展Lua API 228 12.2.3 实现next()函数 229 12.3 通用for循环指令 229 12.4 测试本章代码 232 12.5 本章小结 234 第13章 异常和错误处理 235 13.1 异常和错误处理介绍 235 13.2 异常和错误处理API 237 13.2.1 Error() 238 13.2.2 PCall() 239 13.3 error()和pcall()函数 240 13.4 测试本章代码 241 13.5 本章小结 242 第三部分 Lua语法和编译器 第14章 词法分析 245 14.1 编译器介绍 245 14.2 Lua词法介绍 247 14.3 实现词法分析器 251 14.3.1 定义Token类型 252 14.3.2 空白字符 254 14.3.3 注释 256 14.3.4 分隔符和运算符 256 14.3.5 长字符串字面量 258 14.3.6 短字符串字面量 259 14.3.7 数字字面量 262 14.3.8 标识符和关键字 263 14.4 LookAhead()和其他方法 264 14.5 测试本章代码 265 14.6 本章小结 267 第15章 抽象语法树 269 15.1 抽象语法树介绍 269 15.2 Chunk和块 270 15.3 语句 272 15.3.1 简单语句 273 15.3.2 while和repeat语句 273 15.3.3 if语句 274 15.3.4 数值for循环语句 275 15.3.5 通用for循环语句 275 15.3.6 局部变量声明语句 276 15.3.7 赋值语句 277 15.3.8 非局部函数定义语句 278 15.3.9 局部函数定义语句 279 15.4 表达式 280 15.4.1 简单表达式 280 15.4.2 运算符表达式 281 15.4.3 表构造表达式 281 15.4.4 函数定义表达式 282 15.4.5 前缀表达式 283 15.4.6 圆括号表达式 284 15.4.7 表访问表达式 284 15.4 |
内容简介 | |
本书是一本面向Lua程序员和脚本语言爱好者的语言自制指南和实战宝典。作者融合自己丰富的工程实践经验,详细阐述Lua语言的核心语法和实现原理,深入探讨Lua虚拟机、编译器和标准库,并给出了实际可以编译执行的代码。助你从零基础开始编程实现Lua语言,彻底理解脚本语言工作原理。全书分为3个部分,共21章。第一部分主要讨论LuaAPI和虚拟机实现,包括二进制chunk格式、Lua虚拟机指令集、元编程、错误处理等。第二部分主要讨论Lua语法和编译器实现,包括词法分析、语法分析、代码优化、代码生成等。第三部分主要讨论Lua辅助API和标准库实现,包括基础库、实用工具库、包和模块、协程等。 |
亲,大宗购物请点击企业用户渠道>小苏的服务会更贴心!
亲,很抱歉,您购买的宝贝销售异常火爆让小苏措手不及,请稍后再试~
非常抱歉,您前期未参加预订活动,
无法支付尾款哦!
抱歉,您暂无任性付资格