Files
Interpreter/tests/CMakeLists.txt
T
Admin 924c0c1923 阶段2-4/2-5:Stb V2(头 128B/槽表段/值段/常量表 8B)+ Codegen V2 重写
Stb.h/.cpp V2:
- 头 128B:kOffSlots/kOffValues/kOffNSlots/kOffValuesSize/kOffMeta/kOffMaxStack
- 常量表 8B(无 tag)、槽表行 8B {addr,预留}、static_assert 更新
- StbView:新字段访问器 + slots_bytes + 段校验 6 段(含元数据空段)

Codegen V2:
- 变长指令发射(Codec 位号,emit/E_rr..E_cal/E_slot_off)
- 槽表→值段布局(1/2/4/8 对齐;实例=1 槽表条目指向字段块)
- 常量表位模式去重(LOADK 按 func 解释);字节化跳转回填
- max_stack(调用图 DAG 最长路径 + 环检测递归报错)
- 用户 FB 内联(LOAD_OFF/STORE_OFF 字段访问);内建 FB → CAL fb_id,slot
- 头 128B 拼装(version=2/STATOR2/段序)

配套:main.cpp 常量显示去 tag;codegen_test 临时剥离(阶段 3 重写);
machine_test 修正(72 op + 负例修复)。ctest:10/13 绿(vm/cases 预期内剥离)。
2026-08-25 20:14:01 +08:00

125 lines
4.5 KiB
CMake
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 自动化用例
add_test(NAME stcompiler_version
COMMAND STCompiler)
add_test(NAME bytecode_executor_version
COMMAND BytecodeExecutor)
# CLI 级:编译需 --machine;缺参必须失败(WILL_FAIL
add_test(NAME cli_compile
COMMAND STCompiler ${CMAKE_SOURCE_DIR}/tests/cases/01_empty_main/project.toml
-o ${CMAKE_CURRENT_BINARY_DIR}/cli_case01.stb
--machine ${CMAKE_SOURCE_DIR}/compiler/machine.toml)
add_test(NAME cli_missing_machine
COMMAND STCompiler ${CMAKE_SOURCE_DIR}/tests/cases/01_empty_main/project.toml
-o ${CMAKE_CURRENT_BINARY_DIR}/cli_nope.stb)
set_tests_properties(cli_missing_machine PROPERTIES WILL_FAIL TRUE)
# isa 合同测试:链接 isa 库,断言覆盖饱和/编解码/disasm/哈希/映像/sidecar
add_executable(isa_test
./src/isa_test.cpp)
target_link_libraries(isa_test PRIVATE isa)
add_test(NAME isa_roundtrip
COMMAND isa_test)
# compiler 库测试:toml schema、文件集合、工程哈希(REPO_ROOT 注入源目录绝对路径)
add_executable(compiler_test
./src/compiler_test.cpp)
target_link_libraries(compiler_test PRIVATE compiler)
target_compile_definitions(compiler_test PRIVATE
REPO_ROOT="${CMAKE_SOURCE_DIR}")
add_test(NAME compiler_toml
COMMAND compiler_test)
# 词法测试:token 流 + 负例(REPO_ROOT 注入源目录绝对路径)
add_executable(lexer_test
./src/lexer_test.cpp)
target_link_libraries(lexer_test PRIVATE compiler)
target_compile_definitions(lexer_test PRIVATE
REPO_ROOT="${CMAKE_SOURCE_DIR}")
add_test(NAME lexer_tokens
COMMAND lexer_test)
# 语法测试:line1 AST 结构 + 负例(REPO_ROOT 注入源目录绝对路径)
add_executable(parser_test
./src/parser_test.cpp)
target_link_libraries(parser_test PRIVATE compiler)
target_compile_definitions(parser_test PRIVATE
REPO_ROOT="${CMAKE_SOURCE_DIR}")
add_test(NAME parser_syntax
COMMAND parser_test)
# 链接测试:用例 09/10/11/12/16/19 + line1 正例(REPO_ROOT 注入源目录绝对路径)
add_executable(linker_test
./src/linker_test.cpp)
target_link_libraries(linker_test PRIVATE compiler)
target_compile_definitions(linker_test PRIVATE
REPO_ROOT="${CMAKE_SOURCE_DIR}")
add_test(NAME linker_links
COMMAND linker_test)
# 类型检查测试:用例 14 + 负例 + 正例(REPO_ROOT 注入源目录绝对路径)
add_executable(typecheck_test
./src/typecheck_test.cpp)
target_link_libraries(typecheck_test PRIVATE compiler)
target_compile_definitions(typecheck_test PRIVATE
REPO_ROOT="${CMAKE_SOURCE_DIR}")
add_test(NAME typecheck_types
COMMAND typecheck_test)
# TODO(V2): 阶段 3 重写 codegen_test(用 compiler::Codec 断言 V2 产物,去 isa 依赖)
# 寄存器码测试(12.8 切片 1):用例 01/02 出映像(REPO_ROOT 注入源目录绝对路径)
# add_executable(codegen_test
# ./src/codegen_test.cpp)
#
# target_link_libraries(codegen_test PRIVATE compiler isa)
# target_compile_definitions(codegen_test PRIVATE
# REPO_ROOT="${CMAKE_SOURCE_DIR}")
#
# add_test(NAME codegen_slice1
# COMMAND codegen_test)
# VM 测试:手工映像 + 编译器产物 + 定时器 + 确定性(REPO_ROOT 注入源目录绝对路径)
add_executable(vm_test
./src/vm_test.cpp)
target_link_libraries(vm_test PRIVATE compiler vm)
target_compile_definitions(vm_test PRIVATE
REPO_ROOT="${CMAKE_SOURCE_DIR}")
add_test(NAME vm_cycles
COMMAND vm_test)
# 12.2 二十用例点亮(12.11):按 EXPECTED.md 期望跑完整管线(REPO_ROOT 注入源目录绝对路径)
add_executable(cases_test
./src/cases_test.cpp)
target_link_libraries(cases_test PRIVATE compiler vm)
target_compile_definitions(cases_test PRIVATE
REPO_ROOT="${CMAKE_SOURCE_DIR}")
add_test(NAME cases_all
COMMAND cases_test)
# machine.toml 加载与强校验(阶段 A 步骤 3;REPO_ROOT 注入源目录绝对路径)
add_executable(machine_test
./src/machine_test.cpp)
target_link_libraries(machine_test PRIVATE compiler)
target_compile_definitions(machine_test PRIVATE
REPO_ROOT="${CMAKE_SOURCE_DIR}")
add_test(NAME machine_config
COMMAND machine_test)