指令编码:fmt 位段取消,形态改由前缀分区表达(Q1=010 查表 / Q2 空位待定 / Q3 全组分区)

- 前缀分区:11=RR、10=NONE、011=RRR、010=其他8条(查表)、0010=SLOT+off、
  0011=IMM64、0001=预留(32B)
- 字节 1 = [func:4 | 空:4](空位待全部编码后定)
- 指令集清单:全部 72 行编码按新分区重排;§1 位号表/位图更新
- uses_* 推导:前缀直推 + 010 区查表;编译器优化/指令集优化同步
- op 预算:RR 21/64、NONE 2/64、RRR 26/32、其他 8/32、SLOT+off 8/16、IMM64 1/16
This commit is contained in:
2026-08-24 15:30:59 +08:00
parent fda4f7a3ec
commit 134f1748ec
3 changed files with 203 additions and 256 deletions
+2 -2
View File
@@ -54,7 +54,7 @@
### 3.4 变长指令对 codegen 的影响
- **跳转回填改字节单位**`patch_jump` 按字节(off32,相对下一条),pc/code_offset/code_len 全字节化
- 发射器(E_*)按 fmt 决定长度组(4/8/16B),指令缓冲按字节追加
- 发射器(E_*)按前缀分区决定长度组(4/8/16B),指令缓冲按字节追加
- 取指/对齐:code 段 16 字节对齐
### 3.5 类型系统扩展(ST 层)
@@ -86,7 +86,7 @@
| Typecheck | 禁隐式转换(严格一致)+ 字面量上下文适配、19 类型元数据 |
| Linker | 槽表条目分配(addr:u32)、FB 实例字段偏移 |
| Codegen | E_* 变长发射、字节化回填、槽表+值区 layout、FB 共享体(16B 变体) |
| MachineConfig / machine.toml | type 表 19 条(base/width/signed/tag)、fmt/type 位段互锁校验 |
| MachineConfig / machine.toml | type 表 19 条(base/width/signed/tag)、前缀分区/func 位段校验 |
## 6. 实施阶段(合并进指令集优化.md §6)