refactor: 引入 Arena 内存池并优化指令分发,为类型系统重构做准备

This commit is contained in:
2026-03-08 15:59:55 +08:00
parent 91e4eb734e
commit 90448006ff
13 changed files with 301 additions and 36 deletions

View File

@@ -21,6 +21,7 @@ namespace Fig
enum class OpCode : std::uint8_t
{
Exit, // 结束运行
LoadK, // iABx 模式: R[A] = Constants[Bx]
LoadTrue, // iABC: R[A] = true
LoadFalse, // iABC: R[A] = false
@@ -35,7 +36,8 @@ namespace Fig
Jmp, // iAsBx: ip += sBx 无条件跳转
JmpIfFalse, // iAsBx: 如果 R[A] 为假, ip += sBx
Mov, // iABx: R[A] = R[Bx]
Mov, // iABx: R[A] = R[Bx]
Add, // iABC: R[A] = R[B] + R[C]
Sub, // iABC: R[A] = R[B] - R[C]
Mul, // iABC: R[A] = R[B] * R[C]
@@ -43,6 +45,11 @@ namespace Fig
Mod, // iABC: R[A] = R[B] % R[C]
BitXor, // iABC: R[A] = R[B] ^ R[C]
IntFastAdd, // iABC: R[A] (Int) = R[B] (Int) + R[C] (Int)
IntFastSub, // iABC: R[A] (Int) = R[B] (Int) - R[C] (Int)
IntFastMul, // iABC: R[A] (Int) = R[B] (Int) * R[C] (Int)
IntFastDiv, // iABC: R[A] (Double) = R[B] (Int) / R[C] (Int)
Equal, // iABC: R[A] = R[B] == R[C]
NotEqual, // iABC: R[A] = R[B] != R[C]
Greater, // iABC: R[A] = R[B] > R[C]