Admin
|
eb6829b9b9
|
新增 STCompiler 使用说明文档。
- 构建 / 用法(-o 产出 .stb)/ 退出码 / line1 示例
- project.toml 字段表、ST 子集支持范围与 v1 限制清单
- 编译管线五类错误前缀与示例;样例与测试索引;当前状态
- compiler/README 与 Doc/索引 登记
|
2026-08-21 11:55:36 +08:00 |
|
Admin
|
6f5e8ef755
|
Merge branch 'dev_RegisterEncoding' into dev
|
2026-08-21 11:54:19 +08:00 |
|
Admin
|
0a42d5876e
|
STCompiler 接线完整编译管线:-o 产出 .stb。
- STCompiler <project.toml> -o <name>.stb:读 .st → 链接 → 类型检查 → 寄存器码 → 写映像
- 无 -o 保留 12.3 行为(打印文件集合与哈希)
- 验证:line1 编译出 184 字节 .stb(2 函数 4 全局);负例 10/14/19 按期望报错退出码 1
|
2026-08-21 11:54:02 +08:00 |
|
Admin
|
0263813a8f
|
12.8 切片 7:FB 实例块、用户 FB 内联、CAL_TON/TOF/CTU。
- FB 实例 → 数据区实例块(字段地址 = 基址+偏移,编译期算死;跨周期持久)
- 用户 FB 调用点内联展开(实参写字段 → FB 体以实例字段为变量编译)
- 内建 TON/TOF/CTU:实参写字段 → CAL_* <实例偏移>;FB 生成空函数占位保持 fn_id
- codegen_test:189 断言(用例 15 内联序列、17 CAL_TON 字段偏移、18 TOF/CTU、line1 全链路 LOAD_I/STORE_Q),ctest 9/9
- 20 用例扫描:14 正例全部出映像,6 负例按期望在前层拒绝
|
2026-08-21 11:52:25 +08:00 |
|
Admin
|
0a36e36b16
|
12.8 切片 6:FUNCTION 与 CALL,冻结调用约定。
- 调用约定(冻结进 isa 规格与 12.8 文档):结果 r0、参数 r1..r7(最多 7 输入、函数内只读)、
变量与临时全部从 r8 起;CALL/RET 时 VM 复制 r0..r7(12.9 实现)
- 调用点:实参求值到 r8+ 临时 → MOVE r(1+i) → CALL fn_id → MOVE rd, r0
- 函数名赋值 = 写 r0(结果);写函数输入 → codegen error
- codegen_test:134 断言(用例 13 两函数 CALL 序列;既有用例帧基址迁移 r8 起),ctest 9/9
|
2026-08-21 11:48:33 +08:00 |
|
Admin
|
31ba557627
|
12.8 切片 5:WHILE 回环与四则运算。
- WHILE 编成 L_loop: <cond→t> JF t, L_end <body> JMP L_loop L_end:,JF/JMP 双回填
- 四则 ADD/SUB/MUL/DIV(用例 5 循环体自增需要,同模式实现,用例 7 顺带点亮)
- codegen_test:115 断言(用例 05 回环 JMP -8、07 四则+比较、08 TIME 常量表),ctest 9/9
|
2026-08-21 11:45:32 +08:00 |
|
Admin
|
6f1bf61c7f
|
12.8 切片 4:CMP_* 与 IF/ELSIF/ELSE 跳转。
- CMP_xx:两侧求值到临时后比较;IF 编成 <cond→t> JF t, L_next <body> JMP L_end 链
- 分支尾部 JMP 与条件 JF 双回填;无 else 时末分支 JF 直接落 L_end
- codegen_test:89 断言(用例 04 完整跳转序列),ctest 9/9
|
2026-08-21 11:43:23 +08:00 |
|
Admin
|
e7dee50cde
|
12.8 切片 3:NOT 与短路 AND/OR(编跳转)。
- 短路模式:<lhs→rd> JF(AND)/JT(OR) rd, L_end <rhs→t> MOVE rd, t L_end:
- patch_jump 回填偏移;约定相对下一条指令(目标 = 当前 + 1 + off),冻结进 isa 规格
- codegen_test:71 断言(用例 03 跳转序列 JF/JT +2、NOT 序列),ctest 9/9
|
2026-08-21 11:40:53 +08:00 |
|
Admin
|
ac411e6a4a
|
12.8 切片 2:全局数据区与 I/Q/M(LOAD/STORE 指令)。
- 数据区布局:声明序 + 对齐(BOOL 1B/INT 2B/TIME 8B),初值入数据段
- 读全局 LOAD_GLOBAL / io.input 绑定用 LOAD_I;写 STORE_GLOBAL / io.output 用 STORE_Q;写 io.input 拒绝
- 临时寄存器分配:语句内递增、语句结束复用基址
- codegen_test:51 断言(用例 09 初值+LOAD_GLOBAL、io 绑定 LOAD_I/STORE_Q、混合布局偏移、写输入负例),ctest 9/9
|
2026-08-21 11:38:57 +08:00 |
|
Admin
|
66359a0a26
|
12.8 切片 1:寄存器码骨架(MOVE/LOADK/RET)。
- Codegen.h/cpp:帧寄存器(0 起声明序)、常量表、函数表、小端映像拼装
- 切片 1 范围:PROGRAM 标量 + 字面量 LOADK + 变量 MOVE + RET;其余构造报 codegen error
- codegen_test:23 断言(用例 01 空 MAIN 出 RET、02 LOADK r0/r1 + 常量表),ctest 9/9
|
2026-08-21 11:32:31 +08:00 |
|
Admin
|
d296a9215e
|
规划 12.8 寄存器码:存储布局、指令模式、8 片执行计划。
- 寄存器码.md:帧/数据区布局(FB 实例块持久化)、短路编跳转、函数帧约定(结果 r0)
- 用户 FB 调用内联展开定案;内建 CAL_TON/TOF/CTU
- 8 片计划:骨架→I/Q/M→短路→IF→WHILE→算术→CALL→FB+line1 全链路
- 索引.md 登记
|
2026-08-21 11:30:43 +08:00 |
|
Admin
|
5c140c36ff
|
Merge branch 'dev_TypeChecking' into dev
|
2026-08-21 11:27:10 +08:00 |
|
Admin
|
9cd4997a3a
|
实现 12.7 类型检查:表达式类型、语句规则、FUNCTION 禁写全局。
- Typecheck.h/cpp:三型(BOOL/INT/TIME)求值,AND/OR/NOT 只吃 BOOL、算术只吃 INT(TIME 无算术)、比较同型、IF/WHILE 条件必须 BOOL
- FUNCTION 禁写全局(含经 VAR_EXTERNAL)——用例 14 点亮;函数名赋值=返回类型
- FB 命名实参匹配字段类型;FB 实例不能当值
- typecheck_test:23 断言(用例 14 + 8 类负例 + 13 个正例),ctest 8/8
|
2026-08-21 11:26:55 +08:00 |
|
Admin
|
93a4662d6a
|
三个 compiler 源文件补 Doxygen 注释:函数功能与参数说明。
- Lexer.cpp:13 个函数 @brief/@param/@return(含 T# 字面量、行列语义)
- Parser.cpp:24 个函数(含表达式优先级爬升、token 前瞻区分)
- Linker.cpp:24 个函数(含六步流程、三色 DFS 环检测、io 校验)
- 文件头统一:设计说明 + 函数清单;代码零改动,ctest 7/7 通过
|
2026-08-21 11:23:37 +08:00 |
|
Admin
|
36f2f5637c
|
Merge branch 'dev_SymbolTablesAndLinking' into dev
|
2026-08-21 11:14:59 +08:00 |
|
Admin
|
6f02c18bbb
|
实现 12.6 符号表与链接:全局定槽、引用解析、循环检测。
- Linker.h/cpp:收集导出(仅 gvl 文件顶层 VAR_GLOBAL、声明顺序定槽、重复名拒绝)
- VAR_EXTERNAL 接同一槽、类型一致;FB 实例必须先声明;字段存在性校验;函数调用图 DFS 环检测
- io.var 必须在 GVL;内建 TON/TOF/CTU 布局冻结;用户 FB 字段 = input/output/var(external 不是字段)
- 函数名赋值 = 结果值写入(用例 13 约定);dump_symbols 打印 name kind type address file
- linker_test:51 断言(用例 09/10/11/12/16/19 + line1/17 正例),ctest 7/7;20 用例扫描 15 绿 5 按期望拒
|
2026-08-21 11:14:03 +08:00 |
|
Admin
|
93d2c96f20
|
Merge branch 'RecursivDescentParsing' into dev
|
2026-08-21 11:07:51 +08:00 |
|
Admin
|
4ba44459e2
|
实现 12.5 递归下降语法:AST + 拒绝清单。
- Parser.h/cpp:POU 外壳(PROGRAM/FUNCTION/FUNCTION_BLOCK)、变量段、语句(赋值/IF/WHILE/FB 调用)、表达式优先级爬升(NOT/AND/OR 短路/比较/算术/函数调用/负号)
- Unit 结构:顶层 VAR_GLOBAL 段(GVL 文件形态)+ POU 列表
- 拒绝:VAR_IN_OUT/REF/CLASS/ANY 等保留名、链式比较、FB 字段赋值、顶层非 GVL 段
- THEN/DO 补入关键字表(12.5 修订,同步 12.1 与词法文档)
- parser_test:98 断言(line1 三文件 AST、FUNCTION 调用、IF/WHILE/TON、9 类负例),ctest 6/6
|
2026-08-21 11:07:34 +08:00 |
|
Admin
|
d4e2c1ae7c
|
实现 12.4 词法:25 关键字、小写折叠、TIME 字面量、lex error。
- Lexer.h/cpp:关键字表(大小写不敏感折小写)、(* *) 注释不嵌套、整数/T# 段式字面量、最长匹配符号
- token 带 source_file + 行列(起始位置,修了消费后行列的偏差)
- lexer_test:75 断言(line1 三文件 token 流 21/34/27、大小写、符号、注释、行列、5 类负例)
- Doc/compiler/词法.md:设计文档 + 执行计划
|
2026-08-21 10:51:45 +08:00 |
|
Admin
|
9a07f938f9
|
清理:isa 去掉局部 C++11 覆盖,Project.cpp 补注释,加 .clangd。
- isa/CMakeLists.txt 删除 set(CMAKE_CXX_STANDARD 11):会覆盖全局 C++20 决策,改由 Standards.cmake 统一
- Project.cpp 各段解析补说明注释
- .clangd:clangd 编译数据库指向 build/gcc-debug
|
2026-08-21 10:41:39 +08:00 |
|
Admin
|
c076c25368
|
实现 12.3 toml 读取:schema 校验、文件集合、工程哈希。
- Project.h/cpp:toml++ 解析 + 字段白名单(未知键带行号报错)、name/entry/cycle_limit/dt_ms/files.st 必填、io 条目完整性、entry 必须 program MAIN
- compile_files:files.st ∪ gvl.file 去重;compute_project_hash:路径排序后 FNV-1a 64 增量,缺文件报 file missing
- STCompiler <project.toml>:打印文件列表与哈希,失败退出码 1,--help
- compiler 私有链接 toml++ v3.4.0;测试固化 compiler_toml(35 断言,line1 哈希冻结 0xc3fe4ae74ad45900)
|
2026-08-21 00:32:53 +08:00 |
|
Admin
|
6df3465b37
|
登记第三方子模块并预留 TUI 观察接口。
- third_party:tomlplusplus(v3.4.0)+ FTXUI(main@9221a3b)git 子模块
- vm/扫描周期.md:可观察性接口(v1 预留)——step/snapshot、只读轮询、快照 POD 化
- executor/执行器入口.md:TUI 观察界面(最后做)——TUI 属执行器,输出层可替换
- 初步计划 12.11 补 TUI 归属;C++11 残留引用同步为 C++20
|
2026-08-20 22:51:05 +08:00 |
|
Admin
|
223dc3eb45
|
Merge branch 'temp_0820' into dev
|
2026-08-20 21:36:17 +08:00 |
|
Admin
|
f1d53de2d1
|
升级语言标准至 C17 + C++20,关闭 GNU 扩展。
|
2026-08-20 21:36:01 +08:00 |
|
Admin
|
a82be632f6
|
feat: 添加toml++子仓库
|
2026-08-20 15:25:09 +08:00 |
|
Admin
|
ef94ab1987
|
落地 12.2 二十个用例目录:toml + .st + 期望表。
- tests/cases/ 01~20:13 正例 / 6 负例 / 1 运行时故障
- 负例冻结报错类别:非 GVL 写全局、同名全局、io.var 未声明、FUNCTION 写全局、未声明实例、循环调用
- tests/README 补充用例清单与点亮节奏
|
2026-08-19 14:43:47 +08:00 |
|
Admin
|
dd7f7bcba7
|
双可执行落地:STCompiler 与 BytecodeExecutor。
- STCompiler 入口在 compiler/src/main.cpp,链 compiler+isa
- host/ 改名 executor/,BytecodeExecutor 链 vm+isa 不链 compiler
- compiler/vm 补 PUBLIC 链 isa;顶层加入 executor
- CTest:版本冒烟 2 例 + isa_roundtrip(89 断言),3/3 通过
|
2026-08-19 14:40:44 +08:00 |
|
Admin
|
c378411637
|
落地映像读写:72 字节头、段布局、FNV-1a、.stb 与 sidecar。
- 指令与映像.md 冻结:头字段表、常量表/函数表行、段序、数据段对齐、sidecar 格式
- Types.h 补 TypeTag;Image.h/cpp:ImageView 校验、write_ret_main、文件与 sidecar
- isa CMake 改 target_include_directories PUBLIC
|
2026-08-19 14:40:38 +08:00 |
|
Admin
|
eba48f852e
|
实现指令编解码与反汇编,冻结 disasm 格式。
- Encode.h/Encode.cpp:encode/decode 往返 + disasm 一行文本
- 指令与映像.md 新增反汇编格式表(9 种形态 + 未知操作码)
- Op.h STORE_* 注释对齐 disasm(rs, slot 寄存器在前)
|
2026-08-19 14:06:20 +08:00 |
|
Admin
|
7c855b1618
|
文档同步双可执行架构:STCompiler + BytecodeExecutor。
- 12.10 重写为两条命令:STCompiler 编译出 .stb + sidecar,BytecodeExecutor 加载执行
- 12.0 删独立 stc.exe,12.13 依赖方向改为 STCompiler/BytecodeExecutor
- 指令与映像.md 新增「映像文件(.stb)与 sidecar」节,I/O 绑定不进映像
- host/ 改名 executor/,宿主入口.md 重写为执行器入口.md
- README / tests / examples / isa README 同步
|
2026-08-19 13:59:50 +08:00 |
|
Admin
|
94accd52c3
|
落地 isa 合同:饱和类型、操作码枚举、32-bit 指令编解码。
- Types.h:TIME 改 int64_t(毫秒),补 sat_add/sub/mul/div,除零与 INT_MIN/-1 规则
- Op.h:29 条操作码枚举 + mnemonic 助记符,数值即编码
- Instr.h:pack/拆字段 + 按形态 enc_rr/rrr/imm/jmp/jc/slot/call/ret
|
2026-08-19 13:59:48 +08:00 |
|
Admin
|
9a35a881d1
|
建立四模块 CMake 骨架与 line1 样例。
- compiler / vm 空静态库,host 可执行打印版本
- 顶层解开 add_subdirectory,tests 接入 CTest(host_version 通过)
- examples/line1 落地 project.toml 与三个 .st
- Types.h 注释补饱和规则,与 Doc/isa 一致
- .gitignore 忽略 Doc/会话记录.md
|
2026-08-19 10:09:27 +08:00 |
|
 AdminandCursor
|
ff244888c3
|
落地 isa 静态库骨架与 Types 头。
先挂 Encode.cpp 和定宽类型别名,规范仍以 Doc 为准。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-08-18 17:48:09 +08:00 |
|
 AdminandCursor
|
6db7304254
|
添加 GCC CMake presets,顶层先只编 isa。
compiler/vm/host 尚未成库,避免 configure 失败。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-08-18 17:48:03 +08:00 |
|
 AdminandCursor
|
e4cdaf4717
|
把各模块说明从 README 拆到 Doc,并用索引替代 Doc/README。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-08-18 17:18:40 +08:00 |
|
 AdminandCursor
|
583f14967a
|
冻 isa 的指令编码、映像布局与定宽类型,计划改为引用该规范。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-08-18 17:18:30 +08:00 |
|
 AdminandCursor
|
74e5f43da9
|
将 CMake 工程名从 StScan 改为 Stator。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-08-18 17:17:52 +08:00 |
|
 AdminandCursor
|
89f99e65e8
|
建立 StScan CMake 工程,并在 cmake 中规定 C11/C++11。
顶层挂上四个模块目录,语言标准集中在 Standards.cmake。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-08-18 16:51:51 +08:00 |
|
 AdminandCursor
|
50b0456198
|
细化第一版实现顺序,并与仓库目录对齐。
把第 12 节拆成可验收阶段,目录改为 isa/compiler/vm/host。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-08-18 16:51:45 +08:00 |
|
 AdminandCursor
|
2eb2468119
|
划定 CMake 模块目录并补充各层 README。
固定 isa/compiler/vm/host 的职责边界,样例与测试单独成目录。
Co-authored-by: Cursor <cursoragent@cursor.com>
|
2026-08-18 16:32:07 +08:00 |
|
Admin
|
368877ae34
|
初始化仓库
|
2026-08-18 16:14:28 +08:00 |
|