热搜关键词: 电路基础ADC数字信号处理封装库PLC

pdf

Lua设计与实现

  • 1星
  • 2022-03-20
  • 127.02MB
  • 需要1积分
  • 23次下载
标签: Lua

Lua

Lua是一种可嵌入、轻量、快速、功能强大的脚本语言,使用较为广泛,主要用在游戏领域。另外,基于Nginx的OpenResty也是使用Lua来编写脚本的,很多服务器(如Redis)也支持使用Lua来编写脚本。

作为一门诞生已经超过20年的语言,它在设计上是非常克制的。以Lua5.1.4版本来说,其解释器加上周边的库函数等也就不过一万多行的代码量,而如果再进行精简,只需要吃透核心的几千行代码就可以了。

另外,作为一门以纯C代码编写的项目,Lua代码优美、结构组织紧凑,是教科书般经典的C语言项目。

本书首先介绍了Lua中的数据结构,比如通用数据是如何表示的、Lua的字符串以及表类型的实现原理,接着讨论了Lua虚拟机的实现,并且将其中重点的一些指令进行了分类讲解,最后讨论了垃圾回收、模块实现、热更新、协程等的实现原理。

目录

第1章 概述  1

1.1 前世今生  1

1.2 源码组织  5

1.3 Lua虚拟机工作流程  6

第一部分 基础数据类型

第2章 Lua中的数据类型  10

2.1 C语言中实现通用数据结构的一般做法  10

2.2 Lua通用数据结构的实现  11

第3章 字符串  16

3.1 概述  16

3.2 字符串实现  18

第4章 表  24

4.1 数据结构  24

4.2 操作算法  26

4.2.1 查找  26

4.2.2 新增元素  27

4.2.3 迭代  33

4.2.4 取长度操作  33

第二部分 虚拟机

第5章 Lua虚拟机  36

5.1 Lua执行过程概述  36

5.2 数据结构与栈  43

5.3 指令的解析  46

5.4 指令格式  47

5.5 指令的执行  53

5.6 调试工具  55

5.6.1 GDB调试  55

5.6.2 使用ChunkSpy  57

第6章 指令的解析与执行  61

6.1 Lua词法  61

6.2 赋值类指令  64

6.2.1 局部变量  64

6.2.2 全局变量  70

6.3 表相关的操作指令  72

6.3.1 创建表  72

6.3.2 查询表  78

6.3.3 元表的实现原理  79

6.4 函数相关的操作指令  84

6.4.1 相关数据结构  85

6.4.2 函数的定义  90

6.4.3 函数的调用与返回值的处理  94

6.4.4 调用成员函数  99

6.4.5 UpValue与闭包  100

6.5 数值计算类指令  105

6.6 关系逻辑类指令  107

6.6.1 相关指令  108

6.6.2 理论基础  108

6.6.3 相关数据结构及函数  111

6.6.4 关系类指令  114

6.6.5 逻辑类指令  117

6.7 循环类指令  121

6.7.1 理论基础  122

6.7.2 for循环指令  122

6.7.3 其他循环  129

第三部分 独立功能的实现

第7章 GC算法  132

7.1 原理  132

7.2 数据结构  135

7.3 具体流程  138

7.3.1 新创建对象  138

7.3.2 初始化阶段  140

7.3.3 扫描标记阶段  142

7.3.4 回收阶段  147

7.3.5 结束阶段  148

7.4 进度控制  150

第8章 环境与模块  152

8.1 环境相关的变量  152

8.2 模块  157

8.2.1 模块的加载  157

8.2.2 模块的编写  159

8.2.3 模块的热更新原理  161

第9章 调试器工作原理  163

9.1 钩子功能  163

9.2 得到当前程序信息  164

9.3 打印变量  165

9.4 查看文件内容  166

9.5 断点的添加  166

9.6 查看当前堆栈信息  167

9.7 step和next指令的实现  167

第10章 异常处理  169

10.1 原理  169

10.2 Lua实现  170

第11章 协程  175

11.1 概念  175

11.2 相关的API  177

11.3 实现  180

11.4 对称协程和非对称协程  184

附录A 参考资料  187

版权注意事项:
1 、书籍版权½½者和出版社所有
2 、本 PDF仅限用于个人获取知识,进行私底下的知识交流
3 、 PDF 获得者不得在互联½上以任½目的进行传播
4 、如觉得书籍内容很赞,请购买正版实½书,支持½者
5 、请于下½½ PDF 后 24 小时内删除本 PDF 。
½者简介
½名 codedump ,长期从事
E联½后端服务开发工½。
曾经在½易等公司从事游戏
服务器后台开发,在½络游
戏开发工½期间接触到½用
C ++编写服务核心引擎和½
用 Lua脚本编写游戏逻辑的
技术组合后,对L旧产生了浓
厚的安½,遂开始研究真实现
原理,陆提兰布于½络。个人
博害: WWW.αxledump.info 。
. -
v
2
l
i
E
..
-
h
a
F
n
6
z
··i
回½圄要原刨
codedump
O 著
人民邮电出版社
北京
图书在版编目
C I
P )数据
Lua设计与实现
李创著.一北京:人民邮电出版
社, 2017.8
(图灵原创〉
ISBN 978-7-
115-
46537- 5
I. ①L… II. ①李… ill. ①游戏程序一程序设计
(
TP317.6
中½版本图书馆CIP数据核宇( 2017 )第 185067 号
N
内容提要
本书基于 Lua
5.1.4 版本讨论了 Lua 语言的设计原理,全书共分
三部分:第一
部分讲解数据结构(如
通用数据是如½表示的)、字符串以及表类型的实现原理;第二部分是本书最重要的部分,主要讨论了虚
拟机的实现:第三部分讨论了垃圾回收、模块实现、热更新、协程等的实现原理
本书适合对 Lua 内部实现感兴趣以及对编程语言实现原理感兴趣的人阅读
codedump
责任编辑王军花
责任印制½志环
人民邮电出版社出版发行
邮编
½址
北京市丰台区成寿寺路
l
l 号
1001
64
电子邮件
3 l 5@ptpress.com.cn
http
:/.八www.ptpress
.
com.cn
北京鑫正大印刷有限公司印刷
开本: 800 × 1000
印张: 12.25
字数: 290千字
印数: l
-
3
000册
2017年 8 月第 l 版
2017年 8 月北京第 l 次印刷
1/16
定价: 49.00元
读者服务热线
(010)51095186½600
印装质量热线:(010)81055316
反盗版热线:(010)81055315
广告经营许可证:京东工商广登字 20170147 号
展开预览

猜您喜欢

评论

登录/注册

意见反馈

求资源

回顶部

推荐内容

热门活动

热门器件

随便看看

  • 用EZ-USB实现TMS320C6X与主机数据传输
  • NXP新成员Cortex-M0+ LPC800系列
    [align=left]等待了好一段时间,NXP终于出来Cortex-M0+内核芯片LPC800系列微处理器,功能就不多说了,直接上资料了。数据手册:应用手册:[/align][[i] 本帖最后由 zhaojun_xf 于 2012-11-15 10:10 编辑 [/i]]
  • 基于TC35i的远程温度监测系统设计
    1 引言 随着科技的发展和自动化水平的提高,温度的自动监测已经成为各行各业进行安全生产和减少损失采取的重要措施之一[1.2.3]。特定场合下由于监测分站比较分散、偏远,采用传统的温度测量方式周期长、成本高,而且测量员必须到现场进行测量,因此工作效率非常低。且不便于管理。本文提出了基于GSM的远程温度监测系统,采用美国DALLAS公司生产的DSl8820数字温度传感器,通过现有的GSM网络将监测结果
  • 重金悬赏解答问题高手!
    大家好我想问一下:我做的瘦客户机系统,在两台PC机上实验现在有个问题:我通过网络从主机传nk.bin镜象到从机后,从机可以访问主机(类似远程桌面系统),但是如果把nk.bin直接拷到硬盘中,从硬盘启动后也可以进入瘦客户机界面,但是就是不能访问别的机器,请问大家哪部分可能出错了?请大家帮着看看可能出错的情况就可以!谢谢大家 ,解决问题后一定揭贴,给分!1
  • 年轻工程师怎样修炼成为“高手?
    有强烈的好奇心。这是成为高手的必要条件,喜欢新生事物,对问题喜欢刨根问底,以钻研为乐趣。那种得过且过,敷衍了事,仅仅把工作当作饭碗的人连熟手都成不了,更何况高手。有好奇心的人,可以为解决一个问题通宵干,躺在床上也在寻思解决方案,这样的人就是高手的胚子!做事谨慎细致,考虑问题全面。技术工作来不得半点粗心马虎,否则问题多多,后患无穷。甚至给生产、产品品质造成重大影响,给公司造成重大经济损失。马虎的人不
  • Altera SoC FPGA 和 Xilinx Zynq FPGA性能对比
  • 关于DM3730在WCE系统EHCI驱动Suspend与Resume问题
  • 挂起后唤醒并进入OEMPowerOff但无法恢复
  • CC1101载波监听功能
  • RM48与TMS570区别?

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
×