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中相关定义学习