- 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
- do_cal:内建布局冻结(TON/TOF: in/pt/q/et、CTU: cu/r/pv/q/cv,字段=槽序号×8) - TON:in 真 → et+=dt(到 pt 停)、q=et≥pt;假 → 清零 - TOF:in 真 → q=1/et=0;掉电 → et+=dt、et≥pt → q=0 - CTU:cu 上升沿(ctu_prev_ 跨周期)→ cv+1;r 复位;q=cv≥pv - 抽 slot_get/slot_set 复用(exec_one 的 LOAD/STORE 同步重构) - 验证:TON 3 周期到 q=1、TOF 掉电延时 2 周期、CTU 交替上升沿到 cv=3、复位;line1 三组 I 组合 Q 正确 + 确定性两遍一致
- Machine.h:create/run_cycle + 可观察性(step/pc/fn_id/cycle_count/call_depth/data/reg) - Fault:None/CycleLimit/StackOverflow/BadOp/BadSlot/BadConst - 帧 { fn_id, regs[nregs], ret_pc, ret_fn_id },调用栈深度 64,MAIN 帧跨周期保留 - ctu_prev_ 预留(步骤 4);exec_one/do_call/do_ret/do_cal 桩