lua虚拟机字节码修改_lua字节码的解析

本文介绍了lua字节码的基本概念,包括luac编译器的工作原理,lua5.1和lua5.2字节码文件头的结构,以及字节码文件正文的组成。通过分析lua源码的编译过程和字节码文件的结构,为lua字节码的解析和修改奠定了基础。
摘要由CSDN通过智能技术生成

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位&

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值