This website works better with JavaScript
Accueil
Explorer
Aide
S'inscrire
Connexion
simon
/
luago
Suivre
1
Voter
0
Fork
0
Fichiers
Tickets
0
Pull Requests
0
Wiki
Branche:
master
Branches
Tags
master
luago
/
vm
/
readme.md
readme.md
1.1 KB
Lien permanent
Historique
Raw
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 操作数会被解释成有符号整数,其他情况下操作数均被解释成无符号整数