Refactor: 更新OpCode枚举,添加详细注释

This commit is contained in:
2026-07-23 13:01:56 +08:00
parent 9f7fe79a2e
commit 82c7c7178f

View File

@@ -18,51 +18,62 @@ namespace Fig
enum class OpCode : std::uint8_t enum class OpCode : std::uint8_t
{ {
Exit, // 控制流
Exit_MaxRecursionDepthExceeded, Exit, // iAsBx, return sBx
Exit_MaxRecursionDepthExceeded, // iAsBx, fatal: 超出最大递归深度
LoadK, // 常量加载
LoadTrue, LoadK, // iABx, R(A) = K(Bx)
LoadFalse, LoadTrue, // iABC, R(A) = true
LoadNull, LoadFalse, // iABC, R(A) = false
LoadNull, // iABC, R(A) = null
FastCall, // 函数调用
Call, FastCall, // iABC, call Proto[A], args from R(B)
Return, Call, // iABC, call R(A), args from R(B)
Return, // iABC, return R(A)
LoadFn, // 闭包
LoadFn, // iABx, R(A) = new Closure(Proto[Bx])
Jmp, // 跳转
JmpIfFalse, Jmp, // iAsBx, PC += sBx
JmpIfFalse, // iAsBx, if !R(A) then PC += sBx
Mov, // 寄存器移动
Mov, // iABx, R(A) = R(Bx)
Add, // 算术运算
Sub, Add, // iABC, R(A) = R(B) + R(C)
Mul, Sub, // iABC, R(A) = R(B) - R(C)
Div, Mul, // iABC, R(A) = R(B) * R(C)
Mod, Div, // iABC, R(A) = R(B) / R(C)
BitXor, Mod, // iABC, R(A) = R(B) % R(C) (WIP)
BitXor, // iABC, R(A) = R(B) ^ R(C) (WIP)
IntFastAdd, // 快速整数算术(仅 int无类型检查
IntFastSub, IntFastAdd, // iABC, R(A) = R(B) + R(C) (int)
IntFastMul, IntFastSub, // iABC, R(A) = R(B) - R(C) (int)
IntFastDiv, IntFastMul, // iABC, R(A) = R(B) * R(C) (int)
// 结果可能为非整数
IntFastDiv, // iABC, R(A) = (double)R(B) / R(C) (int)
Equal, // 比较
NotEqual, Equal, // iABC, R(A) = R(B) == R(C)
Greater, NotEqual, // iABC, R(A) = R(B) != R(C)
Less, Greater, // iABC, R(A) = R(B) > R(C)
GreaterEqual, Less, // iABC, R(A) = R(B) < R(C)
LessEqual, GreaterEqual, // iABC, R(A) = R(B) >= R(C)
LessEqual, // iABC, R(A) = R(B) <= R(C)
GetGlobal, // 变量存取
SetGlobal, GetGlobal, // iABx, R(A) = G(Bx)
GetUpval, SetGlobal, // iABx, G(Bx) = R(A)
SetUpval, GetUpval, // iABC, R(A) = *Upval(B)
Copy, SetUpval, // iABC, *Upval(B) = R(A)
Copy, // iABC, R(A) = R(B)
Count Count // 哨兵
}; };
namespace Op namespace Op