Commit Graph
4 Commits
Author SHA1 Message Date
Admin b13585711a 阶段 C 步骤 8:vm 读侧型号匹配 + SHA-256 校验。
- vm/Image.cpp:执行器侧 SHA-256 实现(与 compiler 各一份)、fill_model_id、
  model_id()/model_matches()/sha_ok();data_len 不含 SHA 尾
- Machine::create:sha256 不匹配 → 'image sha256 mismatch';型号不匹配 →
  'image model mismatch'(内建 kModelName=STATOR/kModelVersion=1),均拒绝
- vm_test:手拼映像填型号(修越界读 bug)+ compiler::sha256 填尾(95 断言);
  新增篡改拒绝(sha256 mismatch)与型号不匹配(重算 SHA 后 model mismatch)用例
- 验证:line1 正常执行 Q=1;篡改一字节 → 执行器 'image sha256 mismatch' 拒绝;ctest 12/12
2026-08-21 22:29:33 +08:00
Admin 5fccbadaa8 阶段 C 步骤 7:isa 拆出 Image,vm 依赖收窄。
- 删 isa/Image.h + Image.cpp(ImageView/FNV/写文件/sidecar 不再属于 isa)
- vm 自实现只读视图 vm/Image.h/cpp:头 104(12.13)/段校验/缺 SHA 尾报错
  (型号匹配与 SHA 校验留步骤 8);Machine 改用 vm::Image + vm::ImageHeader
- executor:本地读文件(替换 isa::read_stb_file)
- 测试:isa_test 删映像/FNV 部分;codegen_test/vm_test 改用 compiler::StbView /
  vm::ConstEntry;vm_test 手拼映像适配新格式(头 104 + 尾 32 占位)
- 验证:line1 编译 288 字节 → BytecodeExecutor 回放 Q 正确;ctest 12/12
2026-08-21 22:24:57 +08:00
Admin 447a8d0119 阶段 B 步骤 4:compiler 配置驱动化,去除 isa 依赖。
- Project.h 自带 IoBinding;Stb.h/cpp:compiler 侧 .stb 规范(常量/ConstEntry/FNV/StbView/读写/sidecar)
- Codec.h/cpp:指令字 pack/字段/配置驱动 disasm(format 表驱动)
- Codegen:opcode 全查 MachineConfig(E_* 发射器)、常量 tag 查配置类型、初值按基元宽度写、
  映像拼装用 Stb 常量;codegen_project 增加 cfg 参数
- main.cpp:--machine <path>(编译/反汇编必填),--disasm 用 StbView+Codec
- CMake:compiler 不再链接 isa(仅 toml++ 私有);测试补链 isa(自身断言用)
- 验证:20 用例字节不变(hash 0xc3fe4ae74ad45900 相同)、ctest 12/12、缺 --machine 报错退出
2026-08-21 22:14:29 +08:00
Admin 8c0fc4fe98 12.9 步骤 6:vm_test 固化(手工映像 + 编译器产物 + 确定性)。
- 手工映像:标量/跳转/数据区、CALL/RET 帧复制(r1/r2 实参 → r0 结果)、自调用 StackOverflow、越界槽 BadSlot、坏常量 BadConst
- 编译器产物:用例 01~09/13/15/17/18/20 跑周期断言(TON 第 3 周期 q=1、line1 真值表 4 组)
- 用例 06 CycleLimit;确定性:同一 I 序列两遍数据区逐字节一致
- step 单步:停在指令边界、cycle_count/regs 逐步核对
- ctest 10/10(vm_cycles 84 断言)
2026-08-21 20:22:36 +08:00