的笔记

随时随地编辑

LUA源码分析上

主题

LUA源码分析上
http://3dlearn.googlecode.com/files/LUA源码分析上.pdf
(非chrome下载文件名有乱码需要自己重命名)
适合初学lua源码参考之用,本文作为上部分还未深入分析lua的实现原理。恩,要遵守原则。

目录

LUA源码分析(上) 0
有分享交流才有进步,永远不要固步自封 0
目 录 1
1 参考资料 5
2 阅读说明 6
2.1 阅读本文的方式 6
2.2 源码阅读顺序 6
2.3 Lapi 7
2.3.1 index2addr 9
2.3.2 lua_setfield 11
2.4 Lobject 12
2.4.1 Value 12
2.4.2 TString 13
2.4.3 Udata 13
2.4.4 Upvaldesc 14
2.4.5 LocVar 14
2.4.6 Proto 14
2.4.7 UpVal 14
2.4.8 CClosure 15
2.4.9 LClosure 15
2.4.10 Closure 15
2.4.11 Tkey 15
2.4.12 Node 15
2.4.13 Table 15
2.4.14 重要宏 16
2.5 Lstate 16
2.5.1 不公开结构LG 18
2.5.2 CallInfo结构 19
2.5.3 global_State结构 19
2.5.4 lua_State结构 21
2.5.5 lua_newstate 22
2.6 Llex 27
1.1 Lopcodes 27
1.1.1 四种指令格式 27
1.1.2 指令集 27
1.1.3 指令定义 30
1.2 Lvm 31
1.2.1 过程 31
1.2.2 过程调用 32
1.2.3 luaV_execute 33
1.3 Ldo( Stack and Call structure) 34
1.3.1 公开过程 35
1.3.2 luaD_pcall 35
1.3.3 luaD_protectedparser 35
1.4 Lstring 36
1.4.1 luaS_newlstr 36
1.4.2 luaS_newudata 37
1.5 Ltable(hash tables) 37
1.6 Ltm(Tag methods) 37
1.6.1 luaT_init 38
1.6.2 luaT_gettm 38
1.7 Ldebug 38
1.7.1 过程表 38
1.8 Lparser\lcode(递归下降分析器) 39
1.8.1 数据结构 39
1.9 Lgc(增量\渐进垃圾回收器) 39
2 编码规范与约定 40
2.1 标识符惯用法 40
2.2 接口代码约定 40
3 基础数据结构 41
3.1 等价C类型 41
3.1.1 string 41
3.1.2 array 41
4 全局变量 43
4.1 脚本层全局对象 43
4.1.1 查看全局变量 43
4.1.2 全局变量 43
4.2 引擎全局对象 44
5 架构 45
5.1 文件结构 45
5.1.1 文件结构 45
5.2 文件点评 48
5.3 模块划分 48
6 引擎核心 49
6.1 缘起缘灭 49
6.1.1 展开为非核心对象 55
6.1.2 展开为核心对象 55
6.2 状态机 56
6.2.1 CallInfo(L->ci) 58
6.2.2 CallInfo位状态(Bits in CallInfo status) 58
7 虚拟机 59
8 闭包 59
9 垃圾回收 59
10 CASE 60
10.1 初始化和加载脚本 60
10.2 Lua runtime code reading Lua运行期源代码分析阅读 60
10.3 加载脚本 61
10.4 执行字节码 63
10.5 创建math库 66
10.6 set\get方法辨析 69
11 调试与分析 70
11.1 VM Code 70
11.2 LuaCov 71
11.3 LDT 71
11.4 lua调试器:运行时的值查看 72
12 基础模型 73
13 语法糖 73
13.1 类实现 73
13.2 类型转换 75
13.3 LUA_CORE 75
13.3.1 定义动态库 76
13.3.2 定义标准操作 76
13.3.3 打开MS compiler汇编 77
13.3.4 数据包装技巧 78
14 疑问 80
14.1 Tvaluefields为何重复定义? 80
14.2 如何区分栈中表和普通类型? 80
= 附录 = 81
15 元编程METAPROGRAMMING 81
16 闭包 CLOSURE 81
16.1 C 闭包 82
16.2 C++闭包 82
17 基础数据类型数据长度 83
18 THE COMPLETE SYNTAX OF LUA 83
19 递归下降分析器(RECURSIVE DESCENT PARSER) 84
20 垃圾回收器 85
20.1 基础算法 85
20.2 贝姆垃圾收集器 85
21 LUA 5.1 C API 86
21.1 Push data 86
21.2 Check data 86
21.3 Get data checked 86
21.4 Get data converted 87
21.5 Get data with defaults 87
21.6 Stack operator 87
21.7 Value operator 88
21.8 Table 88
21.9 Global data 88
21.10 Call function 89
21.11 Load or call Lua code 89
21.12 Debugging 89
21.13 Buffer 90
21.14 Thread 90
21.15 Library 90
21.16 Misc 91
21.17 Basic types 91

posted on 2012-04-29 15:46 的笔记 阅读(5056) 评论(7)  编辑 收藏 引用

评论

# re: LUA源码分析上 2012-04-29 17:19 zgpxgame

文件坏掉了?下载了打不开  回复  更多评论   

# re: LUA源码分析上 2012-04-29 17:38 OGRE_虫子

怎么下载啊?  回复  更多评论   

# re: LUA源码分析上 2012-04-29 22:30 夸父的笔记

@zgpxgame
@OGRE_虫子
好了  回复  更多评论   

# re: LUA源码分析上[未登录] 2013-06-21 19:43 shongbee2

自己整理的啊。。谢谢分享  回复  更多评论   

# re: LUA源码分析上 2014-03-20 16:36 zr

请问文件中代码调用图你是用什么软件生成的?
ps:文中代码风格看着很舒服,能不能也透漏下是哪种软件的style?  回复  更多评论   

# re: LUA源码分析上 2014-05-01 00:36 夸父的笔记

@zr 有的是doxygen生成的,有的是understand生成的,再有的是PS的
  回复  更多评论   

# re: LUA源码分析上[未登录] 2014-05-11 16:34 me

忘了回你代码格式用的VC自带的@zr
  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理