成功加入购物车

去购物车结算 X
轻舟飘远书店
  • 自己动手实现Lua 虚拟机、编译器和标准库张秀宏机械工业出版社

自己动手实现Lua 虚拟机、编译器和标准库张秀宏机械工业出版社

举报

新华系统图书,正版特价新书! 天津,河北,无锡,成都四大仓库发货,70%城市次达!

  • 出版时间: 
  • 装帧:    平装
  • 开本:    16开
  • ISBN:  9787111610229
  • 出版时间: 
  • 装帧:  平装
  • 开本:  16开

售价 53.70 6.0折

定价 ¥89.00 

品相 全新

优惠 满包邮

优惠 满减券
    运费
    本店暂时无法向该地区发货

    延迟发货说明

    时间:
    说明:

    上书时间2023-02-12

    数量
    库存19
    微信扫描下方二维码
    微信扫描打开成功后,点击右上角”...“进行转发

    卖家超过10天未登录

    • 商品详情
    • 店铺评价
    手机购买
    微信扫码访问
    • 货号:
      1201769482
      商品描述:
      作者简介
      张秀宏,服务器开发工程师,有多年的Java和游戏服务器开发和架构经验,对不错语言虚拟机有很好深入的研究。曾在EA、乐元素等游戏公司担任不错服务器工程师,现任某创业公司架构师。曾于2016年6月出版《自己动手写Java虚拟机》一书,广受读者好评,并多次重印。《自己动手实现Lua:虚拟机、编译器、标准库》是他时隔两年之后推出的又一力作。

      目录
        
      前言


      部分 准备


      章 准备工作 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


      0章 闭包和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


      1章 元编程 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


      2章 迭代器 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


      3章 异常和错误处理 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语法和编译器


      4章 词法分析 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


      5章 抽象语法树 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.8 函数调用表达式 285


      15.5 本章小结 286


      6章 语法分析 287


      16.1 语法分析介绍 287


      16.1.1 歧义 288


      16.1.2 前瞻和回溯 289


      16.1.3 解析方式 290


      16.2 解析块 290


      16.3 解析语句 293


      16.3.1 简单语句 294


      16.3.2 if语句 296


      16.3.3 for循环语句 297


      16.3.4 局部变量声明和函数定义语句 299


      16.3.5 赋值和函数调用语句 300


      16.3.6 非局部函数定义语句 302


      16.4 解析表达式 303


      16.4.1 运算符表达式 304


      16.4.2 非运算符表达式 306


      16.4.3 函数定义表达式 307


      16.4.4 表构造表达式 308


      16.4.5 前缀表达式 310


      16.4.6 圆括号表达式 311


      16.4.7 函数调用表达式 312


      16.4.8 表达式优化 313


      16.5 测试本章代码 315


      16.6 本章小结 316


      7章 代码生成 317


      17.1 定义funcInfo结构体 317


      17.1.1 常量表 318


      17.1.2 寄存器分配 319


      17.1.3 局部变量表 320


      17.1.4 Break表 323


      17.1.5 Upvalue表 324


      17.1.6 字节码 325


      17.1.7 其他信息 327


      17.2 编译块 327


      17.3 编译语句 329


      17.3.1 简单语句 330


      17.3.2 while和repeat语句 331


      17.3.3 if语句 333


      17.3.4 for循环语句 334


      17.3.5 局部变量声明语句 335


      17.3.6 赋值语句 337


      17.4 编译表达式 339


      17.4.1 函数定义表达式 340


      17.4.2 表构造表达式 341


      17.4.3 运算符表达式 343


      17.4.4 名字和表访问表达式 345


      17.4.5 函数调用表达式 346


      17.5 生成函数原型 347


      17.6 使用编译器 349


      17.7 测试本章代码 350


      17.8 本章小结 350


      第四部分 Lua标准库


      8章 辅助API和基础库 353


      18.1 Lua标准库介绍 353


      18.2 辅助API 355


      18.2.1 增强版方法 357


      18.2.2 加载方法 358


      18.2.3 参数检查方法 359


      18.2.4 标准库开启方法 360


      18.3 基础库 361


      18.3.1 基础库介绍 362


      18.3.2 基础库实现 362


      18.4 测试本章代码 365


      18.5 本章小结 366


      9章 工具库 367


      19.1 数学库 367


      19.2 表库 369


      19.3 字符串库 372


      19.4 UTF-8库 374


      19.5 OS库 376


      19.6 本章小结 379


      第20章 包和模块 381


      20.1 包和模块介绍 381


      20.2 实现包库 386


      20.3 测试本章代码 391


      20.4 本章小结 392


      第21章 协程 393


      21.1 协程介绍 393


      21.2 协程API 396


      21.2.1 支持线程类型 396


      21.2.2 支持协程操作 398


      21.3 实现协程库 400


      21.4 测试本章代码 403


      21.5 本章小结 404


      附录A Lua虚拟机指令集 405


      附录B Lua语法EBNF描述 407


      后记 409

      配送说明

      ...

      相似商品

      为你推荐

    孔网啦啦啦啦啦纺织女工火锅店第三课

    开播时间:09月02日 10:30

    即将开播,去预约
    直播中,去观看