步骤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 -4
View File
@@ -43,7 +43,7 @@ CMake 目标:`isa``STATIC`),无依赖;`vm` PUBLIC 链 `isa`。公开
| 项 | V2 定案 |
|---|---|
| 指令宽度 | **变长 4/8/16/32B**,长度与形态由**前缀分区**表达 |
| 前缀 | `11`=RR、`10`=NONE、`011`=RRR、`010 000..101`=IMM/SLOT/JMP/JC/CALL/CAL、`0010`=SLOT+off、`0011`=IMM64、`0001`=预留(32B) |
| 前缀 | `11`=RR、`10`=NONE、`011`=RRR、`010 000..101`=IMM/SLOT/JMP/JC/CALL/CAL、`0010`=SLOT+off / RS+off`0011`=IMM64、`0001`=预留(32B) |
| 头部 | 字节 0 = `[前缀+分区\|op]`;字节 1 = `[func:4\|空:4]`(空位延后定) |
| func | 4 位:0..7 = 宽度×符号(1/2/4/8B×有/无)、8=F32、9=F64;无类型指令 = 0 |
| 寄存器 | 编号 8 位(**256 = 寻址上限**),值 int64;**每帧按函数头 nregs 动态分配** |
@@ -86,12 +86,12 @@ CMake 目标:`isa``STATIC`),无依赖;`vm` PUBLIC 链 `isa`。公开
| `010 100` | 8B | CALL | 2 位 | 4 | 前缀直推 |
| `010 101` | 8B | CAL | 2 位 | 4 | 前缀直推 |
| `010 110/111` | 8B | 预留 | 2 位 | 8 | — |
| `0010` | 16B | SLOT+off | 4 位 | 16 | 前缀直推 |
| `0010` | 16B | SLOT+off / RS+off | 4 位 | 16 | 前缀直推 |
| `0011` | 16B | IMM64 | 4 位 | 16 | 前缀直推 |
| `0001` | 32B | 预留(N2 | 4 位 | 16 | — |
- op 按分区独立编号(0 起);取指:读字节 0 → 前缀定长 → 搬整条
- **uses_rd/uses_ra/uses_rb 全部前缀直推**(零查表):RRR 三寄存器全真;RR 的 rd/rsIMM/SLOT/JC/SLOT+off/IMM64 rdJMP/CALL/CAL/NONE 无
- **uses_rd/uses_ra/uses_rb 全部前缀直推**(零查表):RRR 三寄存器全真;RR 的 rd/rsIMM/SLOT/JC/SLOT+off/RS+off/IMM64 rdRS+off 另含 rs(基址寄存器);JMP/CALL/CAL/NONE 无
### 3.2 func 位段(字节 1 高 4 位)
@@ -126,6 +126,7 @@ CMake 目标:`isa``STATIC`),无依赖;`vm` PUBLIC 链 `isa`。公开
| CALL | fn_id32=47..16、pad=63..48**rd 恒 0** |
| CAL | fb_id16=31..16、slot32=63..32**rd 恒 0** |
| SLOT+off | rd=23..16、slot32=55..24、off32=87..56、pad=127..88 |
| RS+off | rd=23..16、rs=31..24(基址寄存器)、off32=87..56、pad=127..88 |
| IMM64 | rd=23..16、imm64=87..24、pad=127..88 |
---
@@ -192,7 +193,8 @@ CMake 目标:`isa``STATIC`),无依赖;`vm` PUBLIC 链 `isa`。公开
- `MOVE rd, rs`RR,func=宽度 0..3):寄存器间按宽度搬运(高位清 0),不管符号/浮点
- `LOAD rd, slot` / `STORE slot, rs`SLOTfunc 全矩阵):槽表[slot].addr → 值区按 func 读/写宽度
- `LOADK rd, const_id`(IMM,func 全矩阵):常量表条目 8B 原始值,按 func 解释
- `LOAD_OFF rd, slot, off` / `STORE_OFF slot, off, rs`SLOT+off):字段访问(结构体/FB 共享体统一
- `LOAD_OFF rd, slot, off` / `STORE_OFF slot, off, rs`SLOT+off):字段访问(绝对实例槽,调用点/输出读用
- `LOAD_PTR rd, rs, off` / `STORE_PTR rd, rs, off`RS+off):**基址寻址**——rs 寄存器 = 值区地址(实例指针),addr+off 直读值区(FB 共享体函数体内字段访问)
### 6.2 逻辑与位运算