Files
Interpreter/tests
Admin 4f3da55ed7 阶段4-1:isa 重构 V2 完成(Types/Op/Instr/Encode + isa_test 91 checks)
- Types.h:func 宽度/符号表(kFuncWidth/kFuncSigned)、饱和模板(各宽度
  __int128 中间量 + 除法 A:除零返回被除数/MIN/-1 夹界/截断)、删 TypeTag
- Op.h/.cpp:前缀分区 + 72 条指令表(与 machine.toml 强校验一致)、
  uses_rd/rs1/rs2 直推、kFbNames(15 内建 FB)
- Instr.h:变长 instr_len、位号 get/set(含 JC off@55..24、SLOT_OFF off@87..56)、
  enc_* 发射器
- Encode.h/.cpp:decode/encode 往返、disasm(类型后缀 + CAL fb 名 + 未知 0x dump)
- isa_test V2:饱和边界/func 表/前缀定长/位号往返/编解码/disasm/uses_*/指令表

修复的实现 bug:find_op 字符串比较(指针==)、set_byte0 11/10 与 010xxx 分支、
CAL 字段约定((slot<<16)|fb_id)、disasm 未知前缀 used 长度

状态:vm/executor 编译暂破(V1 代码引用旧 isa 接口),4-2 同步
2026-08-26 09:56:43 +08:00
..

tests

自动化用例,由顶层 enable_testing() 接入 CTest。

可以 add_testSTCompiler / BytecodeExecutor(编译→执行管线),或直接链接 compiler + vm 做单元断言。样例工程数据按「一份 toml + 若干 .st」分子目录存放,不要做成 library。

用例目录(cases/

每个用例一个子目录:project.toml + .st + EXPECTED.md(期望:通过 / 报哪类错)。清单与编号见 Doc/初步计划.md 12.2 节,共 20 个:

  • 正例:01 空 MAIN、02 BOOL、03 短路、04 IF、05 WHILE、07 算术、08 TIME、09 GVL+EXTERNAL、13 FUNCTION、15 FB、17 TON、18 TOF/CTU、20 line1
  • 负例(编译错误/链接失败):10 非 GVL 写全局、11 同名全局、12 io.var 未声明、14 FUNCTION 写全局、16 未声明实例、19 循环调用
  • 运行时故障:06 cycle_limit 打满

12.2 完成标准:目录和期望表齐,此时大部分还编不过,属正常。实现阶段逐个点亮。

第一版要冻的

  • 关键字表与约 20 个样例程序
  • 约 20 条指令编码
  • 符号表字段:名字、种类、类型、地址、源文件
  • 链接错误:重复 VAR_GLOBAL、非 GVL 文件写全局、io.var 未声明

给人看的最小闭环放 examples/line1/,本目录放断言和负例。