步骤E:文档收尾——基址寻址落地同步(编译器优化/寄存器码/用例对照/指令与映像/指令集清单/指令执行)
This commit is contained in:
+6
-4
@@ -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/rs;IMM/SLOT/JC/SLOT+off/IMM64 仅 rd;JMP/CALL/CAL/NONE 无
|
||||
- **uses_rd/uses_ra/uses_rb 全部前缀直推**(零查表):RRR 三寄存器全真;RR 的 rd/rs;IMM/SLOT/JC/SLOT+off/RS+off/IMM64 的 rd;RS+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`(SLOT,func 全矩阵):槽表[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 逻辑与位运算
|
||||
|
||||
|
||||
Reference in New Issue
Block a user