成功加入购物车

去购物车结算 X
天涯淘书阁
  • 自己动手实现Lua:虚拟机、编译器和标准库

自己动手实现Lua:虚拟机、编译器和标准库

举报

全新正版现货

  • 作者: 
  • 出版社:    机械工业出版社
  • ISBN:    9787111610229
  • 出版时间: 
  • 装帧:    平装
  • 开本:    16开
  • 纸张:    胶版纸
  • 出版时间: 
  • 装帧:  平装
  • 开本:  16开
  • 纸张:  胶版纸

售价 64.20 7.2折

定价 ¥89.00 

品相 全新品相描述

优惠 满包邮

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

    延迟发货说明

    时间:
    说明:

    上书时间2023-10-14

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

    卖家超过10天未登录

    • 商品详情
    • 店铺评价
    手机购买
    微信扫码访问
    • 商品分类:
      计算机与互联网
      货号:
      25479678
      品相描述:全新
      正版全新
      商品描述:

      【编辑推荐】:
      (1)作者是的服务器开发工程师和架构师,精通Java、GO和Lua等语言,对高级语言的虚拟机有深入研究,《自己动手写Java虚拟机》作者。
      (2)本书3大内容特色:零基础自制编程语言、彻底掌握Lua语言实现原理和工作机制、提升Go和Java语言编程能力。
      (3)本书得到了七牛云创始人兼CEO等大佬的高度评价和推荐。

      【内容简介】:
      本书是一本面向Lua程序员和脚本语言爱好者的语言自制指南和实战宝典。作者融合自己丰富的工程实践经验,详细阐述Lua语言的核心语法和实现原理,深入探讨Lua虚拟机、编译器和标准库,并给出了实际可以编译执行的代码。助你从零基础开始编程实现Lua语言,彻底理解脚本语言工作原理。全书分为3个部分,共21章。*部分主要讨论LuaAPI和虚拟机实现,包括二进制chunk格式、Lua虚拟机指令集、元编程、错误处理等。第二部分主要讨论Lua语法和编译器实现,包括词法分析、语法分析、代码优化、代码生成等。第三部分主要讨论Lua辅助API和标准库实现,包括基础库、实用工具库、包和模块、协程等。

      【作者简介】:
      作者简介
      张秀宏
      服务器开发工程师,有多年的Java和游戏服务器开发和架构经验,对高级语言虚拟机有非常深入的研究。曾在EA、乐元素等游戏公司担任高级服务器工程师,现任某创业公司架构师。
      曾于2016年6月出版《自己动手写Java虚拟机》一书,广受读者好评,并多次重印。《自己动手实现Lua:虚拟机、编译器、标准库》是他时隔两年之后推出的又一力作。

      【目录】:
      前言
      *部分 准备
      第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.8 函数调用表达式  285
      15.5 本章小结  286
      第16章 语法分析  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
      第17章 代码生成  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标准库
      第18章 辅助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
      第19章 工具库  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

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