步骤E:文档收尾——基址寻址落地同步(编译器优化/寄存器码/用例对照/指令与映像/指令集清单/指令执行)

This commit is contained in:
2026-08-27 09:23:12 +08:00
parent 766e3a39b2
commit c53e84f180
6 changed files with 40 additions and 28 deletions
+6 -3
View File
@@ -77,8 +77,10 @@ RET:
槽号 slot(指令操作数,u32)→ 槽表条目(8B:addr:u32 + 预留:u32)→ 值区字节偏移 addr
LOAD rd, slot → rd = 读 value[addr .. addr+宽)(按 func 宽度 + 扩展)
STORE slot, rs → 写 value[addr .. addr+宽) = rs(按 func 宽度截断)
LOAD_OFF rd, slot, off → 读 value[addr+off .. ]FB 字段访问)
STORE_OFF slot, off, rs → 写 value[addr+off .. ]FB 字段访问)
LOAD_OFF rd, slot, off → 读 value[addr+off .. ]FB 字段访问,绝对槽
STORE_OFF slot, off, rs → 写 value[addr+off .. ]FB 字段访问,绝对槽
LOAD_PTR rd, rs, off → 读 value[regs[rs] + off .. ](基址寻址:rs = 实例指针,FB 共享体函数体内)
STORE_PTR rd, rs, off → 写 value[regs[rs] + off .. ](基址寻址)
```
槽表条目数 = `n_slots`;槽号越界(`slot >= n_slots`)或地址 + 宽度越出值段 → `BadSlot`
@@ -97,7 +99,8 @@ STORE_OFF slot, off, rs → 写 value[addr+off .. ]FB 字段访问)
| `JMP off` | `pc += off` |
| `JT rd, off` / `JF rd, off` | `reg[rd] != 0`JT/ `== 0`JF)时 `pc += off` |
| `LOAD / STORE` | 见数据区访问(槽表两级) |
| `LOAD_OFF / STORE_OFF` | 见数据区访问(FB 字段) |
| `LOAD_OFF / STORE_OFF` | 见数据区访问(FB 字段,绝对实例槽 |
| `LOAD_PTR / STORE_PTR` | 见数据区访问(基址寻址:rs 寄存器 = 值区地址 + 偏移;FB 共享体) |
| `CAL fb_id, slot` | 见内置 FB15 条) |
| `CALL fn_id` / `RET` | 见帧与调用栈 |
| `NOP` | 空转 |