java 源码欣赏,云风lua源码欣赏

【实例简介】

这是云风写的,基于lua5.2版本源代码解析,希望加深lua学习的不要错过

这是这本书中其中部分章节的草稿。我不打算按顺序来编写这本书,而打算以独立章节的形式分开完成,

到最后再做统一的调整。由丁业余时间不多,所以产出也不固定。

l

目录

第一章概览

口1源文件划分

12代码风格

L3Lua核心

4代码翻译及预编译字节码

15内嵌库

4

L6独立解析器及字节码编译器

4

了阅读源代码的次序

第二章全局状态机及丙存管理

2.1内存管理

22全局状态机

10

2.2.1

garbage colle

12

see

13

12.2.3 buff

13

2. 2.4 version.

13

22.5防止初始化的意外

14

第三章字符串

17

3,1数据结构

17

3.1.1 Ilash DoS

18

3.2实现

20

3:21字符串比较

20

32.2短字符串的内部化

20

3.3 U

serrata

的构造

22

第四章表

25

4.1数据结构

25

生2算洇

27

,2,1短字符串优亿

29

匡2,2数字类型的哈希们

31

表的迭代

44刈元方法的优化

目录

44.1类型名宇

第五章函数与闭包

39

5,1数原型

5.2 Pval

41

5.3闭包

42

5.31ua闭包

43

3.2C闭包

53.3轻量C函数

46

俤第六章协程及函数的执行

49

6]栈与调用信息

49

6,11数据栈

50

612调用栈

4

63线程

56

62线程的执行与中炘

8

62.1异常处理

622函数调用

60

623钩子

624从C函数中挂起线程.,

67

625挂起与延线

6.261acak和 lua-pcallk

73

627异常处理

76

第七章虚拟机

77

区1指令结构

711常量

7.1.2採作码分类校验

79

71.3操作码列表

80

2字节码的运行

8⊥

7.2.1 luan executel

81

72寄存器赋值

83

7.2.3表处理

724表达式运算

72.5分支和跳转

7.2.6函数调用

.,99

727不定长参数

101

728生成闭包

103

72.9Por循环

72,10协程的中断和延续

108

目录

第八章内置库的实现

111

8.1_从πut模块看Lua的模块注册机制

111

区2math模块API的实现

113

8.3 string

模坝

115

区.4暂且搁置

6

目录

第一章概览

Lua是一门编程语言,Lua官方网提供了由语言发明者实现的官方版朴虽然Lua有简洁清晰的语

言标准,但我们不能将语言的标准制定和实现完全分开看待。事实上、随着官方实现版本的不断更新,Lua

语言标准乜在不断变化

本书试图向读者展现Iua官方实现的细节。在开始前,先从宏观上来看看,实现这门语言需要完成那些

部分的上作

Lua作为一门动态语言,提供了一个虚拟机。Lua代码最终都是是以字节码的形式由虚拟机解释执行的。

把外部组织好的代码置入内存,让虚拟机解析运行,需要冇一个源代码解释器,或是预编译字节码的加载器。

而只实现语言特性,几乎做不了什么事。所以Lua的官方版本还提供了一些库,并提供一系列CAPI,供

第三方开发。这样,Iua就可以借助这些外部库,做一些我们需要的工作。

下面,我们按这个划分来分拆解析。

11源文件划分

从官网下载到Lua52的源代码展开压缩包,会发现源代码文件全部放在sc子日录下。这些文件

根据实现功能的不同,可以分为四部分团

虚拟机运转的核心功能

lapi. cC语言接口

Ectype. c O标准库中 ctype相关实现

Idebug. c Debug接口

ldo.c函数调用以及栈管理

Func. c函数原型及闭包管理

lgc.c垃圾叵收

memc内存管理接口

object c对象操作的些函数

opcodes. C虚拟机的字节码定义

Istate. c全局状态机

Ta是一个以 MiT license发布的开源项目,你可以自由的下载、传播、使用它,它的官方网站是:htp://w1a

2Lua官方实现并不是对Lua语言的唯一实现。另外比较流行的Lua语言实现还有LuaI(htp:/w. wait

由于采用了JI技

术,运行性能更快。除此之外,还能在互联网上找到其它一些不同的实现。

3本书讨论的Lua5.2.2版可以在http://www.lua.org/ftp/lua-5.2.2.tar

g2下载获得

4在Ludwik上有一篇文章介绍了La源代码的结构http://lua-users.org/wiki/luasource

第一章概览

string.c宇符串池

Itable.c表类型的相关操作

ltm.c元方法

lvm.c虚拟机

lzio.c输入流接口

2.源代码解析以及预编译字节码

Icode. c代码生成器

Dump. c序列化预编译的Tna字节

llex,C词法分析器

lparser. c解析器

lundump.c还原预编译的字节码

3.内嵌库

lauxlib. c库编写用到的辅助函数库

lbaselib.c基础库

Ibitlib.c位操作库

Icorolib. c协程库

Idblib c debug库

linit.c内嵌库的初始化

liolib c IO库

Imathlib. c数学库

loadlib. c动态扩展库管理

loslib c OS

Istrlib. c字符串库

Itablib. c表处理库

4.可执行的解析器,字节码编译器

luac解释器

luac. c字节码编译器

1.2代码风格

Lua使用 Clean c國巴编写的源代码模块划分清晰,大部分模块被分解在不同的c文件中实现,以同

名的h文件描述模块导出的接口,比如, Istring. c实现了Lua虚拟机中字符串池的相关功能,而这部分的

内部接口则在 Istring.h中描述。

5 Clean c是标准C/C++的一个子集。它只包含了C话言中的一些必要特性。这样方便把La发布到更多的可能对C语言支持不完整的平台

上。比如,对于没有 ctype.h的C语言编译环境,Lua提供∫ Ectype.c实现了一些兼容函数。

【实例截图】

【核心代码】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值