3.2 KiB
3.2 KiB
阶段 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)——用户决定时机 |