Files
Interpreter/Doc/isa/阶段4-执行侧V2.md
T

4.4 KiB
Raw Blame History

阶段 4/5:执行侧 V2 与全链路(待办清单)

状态:待办。阶段 3(编译器语言层 V2)已完成;本文记录阶段 4(isa+vm 执行侧 V2) 与阶段 5(全链路收尾)的待办项,供后续执行。

阶段 4:isa 重构 + vm 同步(执行侧 V2)

0. 执行步骤总览(细化为子步骤,一次一个)

步骤 内容 验证
4-1a isa/Types.hfunc 宽度/符号表 + 饱和模板(除法 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/.cppencode/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/RTCRTC 虚拟时钟=周期×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.cppImage 新接口(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 C5line1 推演重算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)——用户决定时机