- 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 同步
28 lines
1.2 KiB
Markdown
28 lines
1.2 KiB
Markdown
# 编译管线
|
||
|
||
compiler 模块:ST / toml 编译器。CMake 目标:`compiler`(`STATIC`),依赖 [`指令与映像.md`](../isa/指令与映像.md)。可执行入口 `STCompiler`(本模块 `src/main.cpp`,链 `compiler` + `isa`)。
|
||
|
||
读齐工程后走直通 pass,产出单一映像文件,不上 LLVM。词法、语法、符号表、检查、codegen、链接都留在本库,不再拆 CMake 子库。
|
||
|
||
语言规则、toml 字段、链接与第 12 节阶段见 [`初步计划.md`](../初步计划.md)。指令和映像只认 [`指令与映像.md`](../isa/指令与映像.md)。
|
||
|
||
## 管线
|
||
|
||
```text
|
||
读 toml、收齐 .st
|
||
→ 词法 / 递归下降语法
|
||
→ 收集导出符号
|
||
→ 解析 VAR_EXTERNAL、链接、定地址
|
||
→ 类型检查
|
||
→ 按 PROGRAM / FUNCTION / FB 编寄存器码
|
||
→ 回填跳转、写映像头与工程哈希
|
||
→ 写 <name>.stb(映像)与 <name>.runtime.toml(sidecar:io 绑定)
|
||
```
|
||
|
||
## 边界
|
||
|
||
- toml **不声明变量**;`VAR_GLOBAL` 第一版只允许出现在 `gvl.file`
|
||
- `[[io.*]]` 的 `var` 必须已在 GVL 中;同名全局链接失败
|
||
- 第三方 toml 解析放 `third_party/`,本库私有链接
|
||
- 不写扫描周期,不链 `vm`
|