From 316b252afc779878117a4b64443d16bf69565380 Mon Sep 17 00:00:00 2001 From: chentianya Date: Wed, 26 Aug 2026 09:33:23 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=87=E6=A1=A3=EF=BC=9A=E9=98=B6=E6=AE=B54-?= =?UTF-8?q?=E6=89=A7=E8=A1=8C=E4=BE=A7V2=20=E5=BE=85=E5=8A=9E=E6=B8=85?= =?UTF-8?q?=E5=8D=95=EF=BC=88isa=20=E9=87=8D=E6=9E=84/vm=20=E5=90=8C?= =?UTF-8?q?=E6=AD=A5/executor/=E5=85=A8=E9=93=BE=E8=B7=AF/=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E6=94=B6=E5=B0=BE=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Doc/isa/阶段4-执行侧V2.md | 44 +++++++++++++++++++++++++++++++++++++++ Doc/索引.md | 2 ++ 2 files changed, 46 insertions(+) create mode 100644 Doc/isa/阶段4-执行侧V2.md diff --git a/Doc/isa/阶段4-执行侧V2.md b/Doc/isa/阶段4-执行侧V2.md new file mode 100644 index 0000000..564fe8b --- /dev/null +++ b/Doc/isa/阶段4-执行侧V2.md @@ -0,0 +1,44 @@ +# 阶段 4/5:执行侧 V2 与全链路(待办清单) + +> 状态:**待办**。阶段 3(编译器语言层 V2)已完成;本文记录阶段 4(isa+vm 执行侧 V2) +> 与阶段 5(全链路收尾)的待办项,供后续执行。 + +## 阶段 4:isa 重构 + vm 同步(执行侧 V2) + +### 4.1 isa 重构(4 文件 + isa_test) + +| 文件 | 内容 | +|---|---| +| `isa/include/isa/Types.h` | func 宽度/符号表(`kFuncWidth[16]`/`kFuncSigned[16]`)+ 饱和模板(各宽度 + 除法 A:除零返回被除数、MIN/-1 夹界、截断)+ 浮点工具;**删 TypeTag** | +| `isa/include/isa/Op.h` | 前缀分区(11/10/011/010xxx/0010/0011/0001)+ 指令表(prefix/op/fmt/func_mode,与 machine.toml 72 条对应)+ **uses_rd/ra/rb 前缀直推**(编译期表) | +| `isa/include/isa/Instr.h` | 变长 `instr_len`(前缀定长)+ 位号 get/set(**注意 JC off@55..24**)+ enc_* 发射器 | +| `isa/src/Encode.cpp` | encode/decode/disasm(类型后缀;CAL 显示 fb 名) | +| `tests/isa_test.cpp` | V2 重写:饱和边界/前缀定长/位号往返(含 JC off)/disasm/uses_* | + +### 4.2 vm 同步(Image + Machine + vm_test) + +| 文件 | 内容 | +|---|---| +| `vm/include/vm/Image.h` + `vm/src/Image.cpp` | 头 128B 解析(version=2/型号 STATOR2/n_slots/values_size/offset_meta/max_stack)、6 段校验(含 meta=0 空段)、槽表访问器(slot_addr)、常量表 8B 无 tag | +| `vm/include/vm/Machine.h` + `vm/src/Machine.cpp` | **变长取指**(instr_len 前缀定长搬字节);译码(前缀分区+func+uses_* 直推);**槽表两级访问**(slot→addr→值区按 func 读宽/扩展、写宽);指令语义(MOVE 按 func 宽度搬运高位清 0、LOADK 按 func、算术**各宽度饱和模板+无符号+浮点 IEEE**、CMP 按 func 符号、跳转 off 字节相对下一条、CALL/RET 帧 r0..r7 全宽+ret_pc 字节);**CAL 15 条 fb_id 分派**(含 SR/RS/PWM/RTC,RTC 虚拟时钟=周期×dt_ms);**栈方案 C**(预分配 max_stack、帧头 12B、字节+深度 64 双检查、MAIN 帧常驻);LOAD_OFF/STORE_OFF 字段访问;边沿检测 edge_prev_ | +| `tests/vm_test.cpp` | V2 重写:手拼 V2 映像 + **compiler V2 产物执行**(13 正例 run_cycle 断言)+ TON/CTU + 确定性 | + +### 4.3 executor 适配 + +- `executor/src/main.cpp`:Image 新接口(max_stack 显示等)、I/Q 采样按槽、链 vm+isa(isa 变 V2 后适配) + +### 4.4 验证 + +- `vm_cycles` 恢复绿;`bytecode_executor_version` 恢复 +- 端到端:`STCompiler 20_line1 → BytecodeExecutor` 跑周期,Q 符合真值表 + +## 阶段 5:全链路 + 文档收尾 + +| # | 待办 | +|---|---| +| 1 | `cases_all` 恢复(20 用例 V2 产物 + V2 vm 执行)——阶段 4 完成后预期自动恢复 | +| 2 | **C5:line1 推演重算**(V2 产物逐指令推演,补 `stb文件格式.md` 真实拆解) | +| 3 | line1 端到端验证(编译 + 执行 + 回放,Q 对照 EXPECTED.md) | +| 4 | **文档收尾**:指令执行.md(V2 指令表/帧栈/CAL 15 条)、扫描周期.md、初步计划.md、README、编译器优化.md 同步 V2 状态 | +| 5 | 新类型语法用例固化(19 类型/进制/浮点/日期字面量用例进 tests/cases) | +| 6 | 分支合并(dev_optimize → dev)——用户决定时机 | diff --git a/Doc/索引.md b/Doc/索引.md index 4616801..5df26e8 100644 --- a/Doc/索引.md +++ b/Doc/索引.md @@ -13,6 +13,7 @@ doc/ isa/指令集清单.md isa/指令编码.md isa/阶段1规格总览.md + isa/阶段4-执行侧V2.md compiler/编译管线.md compiler/STCompiler使用说明.md compiler/词法.md @@ -37,6 +38,7 @@ doc/ | [`isa/指令集清单.md`](isa/指令集清单.md) | **V2 草案**:全功能指令清单(10 类 ~55 条,核心/扩展/预留) | | [`isa/指令编码.md`](isa/指令编码.md) | **V2 定案**:RISC-V 式 op + func 编码(前缀长度组 / func 10 组合 / 19 类型映射) | | [`isa/阶段1规格总览.md`](isa/阶段1规格总览.md) | **V2 阶段 1 主参考**:全部定案速览 + 三份规范文档重写任务 + N5 schema 方向 | +| [`isa/阶段4-执行侧V2.md`](isa/阶段4-执行侧V2.md) | **阶段 4/5 待办**:isa 重构 + vm 同步 + 全链路收尾清单 | | [`compiler/编译管线.md`](compiler/编译管线.md) | 编译器边界与管线 | | [`compiler/STCompiler使用说明.md`](compiler/STCompiler使用说明.md) | 构建、用法、工程文件、ST 子集、错误类别 | | [`compiler/词法.md`](compiler/词法.md) | 12.4 词法:关键字表、token、大小写、TIME 字面量 |