Files
Admin 0ebf193ff9 阶段 D 步骤 11:文档同步 + 提交(指令配置全流程收尾)。
- stb文件格式.md:288 字节真实拆解(头 104 含型号标识 STATOR1@0x48、函数表 0x68、
  代码 0x80 fn0 RET=0x21、数据段 0xC8 7 槽、SHA-256 尾 0x100);工具验证与执行器关系更新
- STCompiler使用说明.md:--machine 参数(编译/disasm 必填、打印模式不需要)、
  .stb 加固说明、288 字节示例、当前状态(可编译+可执行+配置驱动)
- 执行器入口.md:读取时型号/SHA 校验拒绝
- ctest 14/14 全绿
2026-08-21 22:35:20 +08:00

2.4 KiB
Raw Permalink Blame History

执行器入口

BytecodeExecutor 模块:可执行入口。CMake 目标:BytecodeExecutorEXECUTABLE),链接 vmisa不链 compiler。源码目录 executor/

第一版两个可执行:STCompiler 编译出 <name>.stb<name>.runtime.tomlBytecodeExecutor 加载映像按扫描周期跑。总顺序见 初步计划.md 第 12.10 节。

用法

BytecodeExecutor <name>.stb [--cycles N] [--replay <file>] [--step]
  • --cycles N:跑 N 个周期(缺省 10
  • --replay <file>:读录制的 I 序列(每行空格分隔的 0/1,按 sidecar io.input 绑定顺序),逐周期喂入;读尽后保持最后一行
  • --step:单步——采样 I 后逐指令打印(pc/fn/反汇编 + 执行后非零寄存器),跑 1 个周期,最后打印 I/Q
  • 每周期打印 cycle N: I=[...] Q=[...](按 sidecar 绑定顺序);故障打印 FAULT(n) 并退出码 1

职责

  • 加载 .stb 映像与 <name>.runtime.toml sidecarI/O 绑定 var → 槽号 → channel/bit
  • 读取时校验型号标识与 SHA-256:型号不匹配 / 文件被篡改 → 直接报错拒绝(执行器只接受与自身内建型号一致的映像)
  • 按 sidecar 采样 I、写回 Q(不创造变量)
  • dt_ms / cycle_limit 从映像头取,推进内置 FBTON/TOF/TP/CTU/CTD/CTUD/R_TRIG/F_TRIG
  • 单步、看寄存器和映像、按录制的 I 回放

边界


TUI 观察界面(最后做,v1 只预留)

TUI 属于本模块(BytecodeExecutor 的界面),用途是观察 VM 运行状态(寄存器、I/Q/M、全局、FB 字段、pc、cycle 计数)。v1 不做 TUI,只预留两点:

  1. 可替换输出层:所有人类可读输出走可注入 sink(默认文本模式)。将来 TUI 独占终端时,文本输出换成 TUI 渲染器,互不污染。
  2. 展示层与 vm 观察 API 分离:TUI 只轮询 vm 的只读快照(见 扫描周期.md 可观察性接口),不写 VM 状态。

候选库:third_party/FTXUI/(占位,vendor 在 TUI 阶段进行,见 third_party/README.md)。