lua_int32 Instruction 指令结构介绍与解析方法
----------------------目录-----------------------
(a)lu_int32 指令类型
(b)Instruction 指令结构
(c)OpMode 操作码类型
(d)MAXARGlimit限制
(e)GET_/SET_OPCODE 操作
(f)操作码分类校验
(j)OpCode 指令枚举
(h)OpArgMask
(i)Opmode 指令解析方法
(j)OP顺序调整加密
---------------------------------------------------
(a)lu_int32 指令类型
关于它的定义:typedef unsigned LUA_INT32 lu_int32;
LUA_INT32 可以通过设置 LUAI_BITSINT 的值来控制值 int类型还是long类型
(b)Instruction 指令结构
在lopcodes.h中有相关于指令的介绍
前6bits(低位):所有指令的opcode
之后会存在
A:8 bits
B:9 bits
C:9 bits
或者
Ax:26 bits(A、B、C组合在一起)
Bx:18 bits(A和B组合在一起)
sBx:18 bits(有符号的Bx)
(c)OpMode 操作码类型
{iABC,iABx,iAsBx,iAx}这个是代表组合的类型
#define SIZE_C 9
#define SIZE_B 9
#define SIZE_Bx (SIZE_C + SIZE_B)
#define SIZE_A 8
#define SIZE_Ax (SIZE_C + SIZE_B + SIZE_A)
#define SIZE_OP 6
#define POS_OP 0
#define POS_A (POS_OP + SIZE_OP)
#define POS_C (POS_A + SIZE_A)
#define POS_B (POS_C + SIZE_C)
#define POS_BxPOS_C
#define POS_AxPOS_A
上述定义说你名了关于Instruction的相关结构介绍
(d)MAXARG limit限制
系列参数定义,定义所有指令参数的限制条件,这里不做详细的介绍了,可以参考lopcodes.h中相关定义学习

本文详细介绍了Lua虚拟机的指令结构,包括lu_int32指令类型、Instruction结构、OpMode操作码类型、MAXARG限制、GET_/SET_OPCODE操作、OpCode指令枚举等,并探讨了通过调整OP顺序实现的加密技术。
最低0.47元/天 解锁文章
2716

被折叠的 条评论
为什么被折叠?



