阶段 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
This commit is contained in:
2026-08-21 22:24:57 +08:00
parent a308ae713d
commit 5fccbadaa8
12 changed files with 334 additions and 647 deletions
+13 -4
View File
@@ -21,7 +21,7 @@
#include <vector>
#include "isa/Encode.h"
#include "isa/Image.h"
#include "vm/Image.h"
#include "vm/Machine.h"
namespace {
@@ -199,8 +199,17 @@ int main(int argc, char** argv) {
std::string err;
std::vector<uint8_t> bytes;
if (!isa::read_stb_file(stb_path.c_str(), &bytes, &err)) {
std::fprintf(stderr, "error: %s\n", err.c_str());
{
std::ifstream in(stb_path, std::ios::binary);
if (!in) {
std::fprintf(stderr, "error: cannot open: %s\n", stb_path.c_str());
return 1;
}
bytes.assign(std::istreambuf_iterator<char>(in), std::istreambuf_iterator<char>());
}
const vm::Image img = vm::Image::from(bytes);
if (!img.ok()) {
std::fprintf(stderr, "error: %s\n", img.error().c_str());
return 1;
}
vm::Machine machine;
@@ -233,7 +242,7 @@ int main(int argc, char** argv) {
}
}
const isa::ImageHeader& h = machine.header();
const vm::ImageHeader& h = machine.header();
std::printf("image: %s (%zu bytes, dt_ms=%u, cycle_limit=%u)\n", stb_path.c_str(),
bytes.size(), h.dt_ms, h.cycle_limit);