Lua 二进制 chunk 格式

注意: 不同系统数值大小会有所不同, 格式仅供参考
数据来源:《自己动手实现Lua:虚拟机、编译器和标准库》张秀宏 2018-9-27

demo.lua 生成的二进制 chunk 文件

--demo.lua
print("Hello World")
1B 4C 75 61 53 00 19 93 0D 0A 1A 0A 04 04 04 08 
08 78 56 00 00 00 00 00 00 00 00 00 00 00 28 77 
40 01 0A 40 64 65 6D 6F 2E 6C 75 61 00 00 00 00 
00 00 00 00 00 01 02 04 00 00 00 06 00 40 00 41 
40 00 00 24 40 00 01 26 00 80 00 02 00 00 00 04 
06 70 72 69 6E 74 04 0D 48 65 6C 6C 6F 20 57 6F 
72 6C 64 21 01 00 00 00 01 00 00 00 00 00 04 00 
00 00 01 00 00 00 01 00 00 00 01 00 00 00 01 00 
00 00 00 00 00 00 01 00 00 00 05 5F 45 4E 56

1B 4C 75 61
"\x1bLua" 用于识别文件格式

53
版本号

00
标准格式

19 93 0D 0A 1A 0A
用于校验的数据块

04 04 04 08 08
分别表示:
int 类型大小
size_t 类型大小
Lua 指令大小
Lua 整数大小
Lua 浮点数大小

78 56 00 00 00 00 00 00
Lua 整数 0x5678

00 00 00 00 00 28 77 40
Lua 浮点数 370.5

01
upvalue 大小

0A 40 64 65 6D 6F 2E 6C 75 61
文件名, @demo.lua

00 00 00 00
第一行

00 00 00 00
最后一行

00
固定参数个数

01
是否有变长参数: 1有, 0没有

02
寄存器数量

04 00 00 00
指令条数

06 00 40 00
41 40 00 00
24 40 00 01
26 00 80 00
指令

02 00 00 00
常量个数

04 06 70 72 69 6E 74
printf

04 0D 48 65 6C 6C 6F 20 57 6F 72 6C 64 21
Hello World!

01 00 00 00 01 00
Upvalue 表

00 00 00 00
子函数原型表

04 00 00 00
行号

01 00 00 00
01 00 00 00
01 00 00 00
01 00 00 00
对应行号

00 00 00 00
局部变量表

01 00 00 00
upvalue 个数

05 5F 45 4E 56
_ENV

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值