* Lua 虚拟机基于寄存器实现 * Lua 虚拟机采用**定长指令集**, 每条指令占4 个字节(32 比特),其中 6 比特用于操作码(Opcode),26 比特用于操作数(Operand) * Lua 5.3 共定义了 47 条指令,按照作用,可大致分为 常量加载指令、运算符相关指令、循环和跳转指令、函数调用相关指令、表操作指令以及 Upvalue 操作指令 * 每条 Lua 虚拟机指令占 4 个字节,其中低 6 比特用于**操作码**,高 26 比特用于操作数 * 按照高 26 个比特的分配方式, Lua 虚拟机可以分为四类,分别对应四种编码模式(Mode): iABC、iABx、iAsBx、iAx * iABC 模式指令可以携带 A、B、C 三个操作数,分别占用 8、9、9 个比特 * iABx 模式指令可以携带 A 和 Bx 两个操作数,分别占用 8 和 18 个比特 * iAsBx 模式的指令可以携带 A 和 sBx 两个操作数,分别占用 8 和 18 个比特 * iAx 模式的指令中携带一个操作数,占用全部 26 比特 * 在 四种模式中,只用 iAsBx 模式下的 sBx 操作数会被解释成有符号整数,其他情况下操作数均被解释成无符号整数