lua的字节码
lua源码在执行前,会被编译为字节码,字节码能加快程序的加载,保存lua源码被意外的修复。lua的字节码只在具有相同的字长和字节顺序的机器上能够移植。
luac编译器能将lua源码编译为字节码二进制文件,其命令如:
luac a.lua
luac默认的输出文件为luac.out,可以通过 -o 选项来指定输出文件。
luac -o a.out a.lua
当Lua发布新版时,luac生成的二进制文件的内部格式可能改变。
字节码文件头
lua5.1字节码文件头的长度为12字节,在我的环境里(Win7 64位,VS下编译为Win32应用)如下:
1b4c 7561 5100 0104 0404 0800
其中第1-4字节为:"\033Lua";第5字节标识lua的版本号,lua5.1为 0x51;第6字节为官方中保留,lua5.1中为 0x0;
第7字节标识字节序,little-endian为0x01,big-endian为0x00;
第8字节为sizeof(int);第9字节为sizeof(size_t);第10字节为sizeof(Instruction),Instruction为lua内的指令类型,在32位以上的机器上为unsigned int;第11字节为sizeof(lua_Number),lua_Number即为double;
第12字节是判断lua_Number类型起否有效,一般为 0x00;
lua5.2字节码文件头的长度为18字节,在我的环境里(Win7 64位&