4.4 KiB
4.4 KiB
阶段 4/5:执行侧 V2 与全链路(待办清单)
状态:待办。阶段 3(编译器语言层 V2)已完成;本文记录阶段 4(isa+vm 执行侧 V2) 与阶段 5(全链路收尾)的待办项,供后续执行。
阶段 4:isa 重构 + vm 同步(执行侧 V2)
0. 执行步骤总览(细化为子步骤,一次一个)
| 步骤 | 内容 | 验证 |
|---|---|---|
| 4-1a | isa/Types.h:func 宽度/符号表 + 饱和模板(除法 A)+ 删 TypeTag | 编译 |
| 4-1b | isa/Op.h:前缀分区 + 指令表 + uses_* 直推 | 编译 |
| 4-1c | isa/Instr.h:变长 instr_len + 位号 get/set + enc_*(JC off@55..24) | 编译 |
| 4-1d | isa/Encode.h/.cpp:encode/decode/disasm(类型后缀 + CAL fb 名) | 编译 |
| 4-1e | isa_test V2 重写(饱和/前缀/位号往返/disasm/uses_*) | isa_test 绿 |
| 4-2a | vm/Image.h/.cpp V2(头 128B/6 段校验/槽表访问器/常量 8B) | 编译 |
| 4-2b | vm/Machine.h/.cpp V2(变长取指/槽表两级/栈方案 C/CAL 15 条/LOAD_OFF) | 编译 |
| 4-2c | vm_test V2 重写(手拼 + 产物执行/定时器/确定性) | vm_test 绿 |
| 4-3 | executor 适配(Image 新接口/I-Q 采样) | executor_version 绿 |
| 4-4 | 验证:vm_cycles 恢复 + line1 端到端执行(Q 对照真值表) | ctest 13/14 |
说明:isa 重构会破坏 vm 编译(Machine.cpp 89 处引用)——isa 与 vm 在同一阶段内连续完成(4-1 后立即 4-2),中间态不提交(或提交 isa 时标注 vm 暂破)。
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)——用户决定时机 |