12.10 双可执行接线:编译产出 sidecar,BytecodeExecutor 跑周期。

- STCompiler -o:另写 <name>.runtime.toml(io 绑定 var→槽号→channel/bit,槽号来自链接结果)
- BytecodeExecutor <name>.stb [--cycles N] [--replay <file>]:加载 .stb + sidecar,
  逐周期采样 I(回放行按 io.input 顺序)→ 跑周期 → 打印 I/Q;故障打印 FAULT 退出码 1
- 手写 sidecar 解析(冻结 TOML 子集);Machine 暴露 header()(dt_ms/cycle_limit)
- 验证:line1 回放 0/1 组合 Q 正确(急停/start 语义)、用例 06 CycleLimit FAULT;ctest 10/10
This commit is contained in:
2026-08-21 20:26:28 +08:00
parent 8c0fc4fe98
commit 00565f035d
5 changed files with 267 additions and 4 deletions
+10
View File
@@ -4,6 +4,16 @@ BytecodeExecutor 模块:可执行入口。CMake 目标:`BytecodeExecutor`
第一版两个可执行:`STCompiler` 编译出 `<name>.stb``<name>.runtime.toml``BytecodeExecutor` 加载映像按扫描周期跑。总顺序见 [`初步计划.md`](../初步计划.md) 第 12.10 节。
## 用法
```text
BytecodeExecutor <name>.stb [--cycles N] [--replay <file>]
```
- `--cycles N`:跑 N 个周期(缺省 10
- `--replay <file>`:读录制的 I 序列(每行空格分隔的 0/1,按 sidecar `io.input` 绑定顺序),逐周期喂入;读尽后保持最后一行
- 每周期打印 `cycle N: I=[...] Q=[...]`(按 sidecar 绑定顺序);故障打印 `FAULT(n)` 并退出码 1
## 职责
- 加载 `.stb` 映像与 `<name>.runtime.toml` sidecarI/O 绑定 var → 槽号 → channel/bit