Admin
|
5e6f2b45fc
|
指令集优化:A9 定案(字面量按上下文适配,默认 DINT 兜底)
|
2026-08-24 11:42:38 +08:00 |
|
Admin
|
9e2a6e95f1
|
指令集优化:A3..A8 定案记录 + A9/A10 反问待讨论
- A3 计数器单字(INT)/双字(DINT)两种;A4 日期字面量 v1 不支持
- A5 TIME 运算/浮点 IEEE 按推荐;A6 sidecar 绑定一致;A7 disasm 类型后缀
- A8 type 表=基元别名(REAL→float32、LREAL→float64)
- §8 新增待讨论:A9 字面量上下文恒存在(默认 DINT 仅兜底);
A10 FB 8 op 可收敛为 1 CAL + fb 类型 id(op 位段省 7 个)
|
2026-08-24 11:40:08 +08:00 |
|
Admin
|
91fc00ed6d
|
指令集优化:A2 定案——LOADK 用 type 位段解释常量,常量表条目 8B 无 tag,IMM64 预留不发射
|
2026-08-24 11:26:05 +08:00 |
|
Admin
|
6e8b9896f2
|
指令集优化:V2 核心决策全部定案(type:5/格式合并/19 类型/禁隐式转换/进制前缀)
- §2.1 字节布局 [len:2|op:6]+[type:5|fmt:3];格式 9→7 形态(CALL→IMM、CAL→SLOT)
- §2.4 19 IEC 基础类型(+DATE/TOD/DT)+13 预留;浮点/进制前缀/禁隐式转换+字面量适配
- §2.6 LOADF 取消、FB 共享体定案(16B 变体=基址寻址)
- §4 改为 A1..A10 尚未确定细节(元数据段/常量内嵌/FB 字段类型化/日期字面量/
算术语义/sidecar/disasm/machine.toml schema/字面量推断/CALL 确认)
- 编译器优化.md 同步定案状态
|
2026-08-24 11:19:40 +08:00 |
|
Admin
|
109f9a7619
|
文档:编译器优化 V2 草案(编译策略层,与指令集优化.md 分层)
- §2 V1 现状:FB 内联/FC CALL/CAL_* 三种调用、短路跳转、固定寄存器分配、
调用约定、跳转回填、常量表去重
- §3 V2 变更:FB 基址寻址消除内联、type 位段驱动语义、槽表/值区布局职责、
变长发射字节化回填、类型扩展与升宽规则
- §4 待确认(引用指令集优化 §4 编译器相关项);§5 编译器侧影响面;§6 阶段;§7 决策历史
|
2026-08-24 10:53:47 +08:00 |
|
Admin
|
3ec803c5a8
|
文档:指令集优化——补 REAL/LREAL(float/double)、FB/FC 内联现状与 V2 基址寻址方向
- §2.4 类型表 16 种满编(type:4),含 C 对应列;浮点表示/常量 tag/字面量
- §2.7 新增:V1 三种调用处理(FB 内联/FC CALL/CAL_*)+ V2 基址寻址消除内联膨胀
- §3 差异表加 FB 行;§4 待确认加 FB 共享体与浮点字面量;§7 决策历史补记
|
2026-08-24 10:52:46 +08:00 |
|
Admin
|
b70bea6b54
|
文档:指令集优化 V2 草案(变长指令/槽表值区/IEC 类型扩展/待确认问题)
- 动机:opcode 位域化、8B 定宽槽浪费、类型扩展、结构体预留、变长指令
- 已定案:变长指令(长度组在 opcode)、寄存器 8 位编号维持、槽表→值区
两级模型、宽度编码进 opcode、初值同文件分段、全 32 位寻址、STATOR2
- 待确认:跳转字节化 / type:4 vs 5 / 长度组映射 / I/Q/M 合并 / 结构体范围
/ ST 层类型支持 / 转换规则 / 字面量
- 影响面清单 + 6 阶段实施计划 + 决策历史
|
2026-08-24 10:46:25 +08:00 |
|
Admin
|
06a497636e
|
文档:executor 计划项——可选 --sidecar 参数(显式指定 I/O 绑定文件,缺省回退同名推导)
|
2026-08-24 09:31:51 +08:00 |
|
Admin
|
6873b5ee0b
|
文档同步:machine.toml 配置驱动架构收尾。
- README.md:依赖方向(STCompiler→compiler 不链 isa)、模块表、isa 归执行器侧、
数据流图(machine.toml + 型号/SHA)
- isa/README.md:重写——只管指令定义(Types/Op/Instr/Encode),删 Image 部分
- 指令与映像.md:依赖图与 CMake(compiler 不链 isa)
- 编译管线.md:管线首步加载 machine.toml、产物含型号/SHA
- 初步计划.md:12.10/12.13 修订(--machine、依赖方向)
- 扫描周期.md / 指令执行.md:12.9 步骤标注已落地、vm 读校验说明
- compiler/vm/executor README:依赖与边界同步
|
2026-08-21 22:39:27 +08:00 |
|
Admin
|
0ebf193ff9
|
阶段 D 步骤 11:文档同步 + 提交(指令配置全流程收尾)。
- stb文件格式.md:288 字节真实拆解(头 104 含型号标识 STATOR1@0x48、函数表 0x68、
代码 0x80 fn0 RET=0x21、数据段 0xC8 7 槽、SHA-256 尾 0x100);工具验证与执行器关系更新
- STCompiler使用说明.md:--machine 参数(编译/disasm 必填、打印模式不需要)、
.stb 加固说明、288 字节示例、当前状态(可编译+可执行+配置驱动)
- 执行器入口.md:读取时型号/SHA 校验拒绝
- ctest 14/14 全绿
|
2026-08-21 22:35:20 +08:00 |
|
Admin
|
a308ae713d
|
阶段 B 步骤 6:.stb 写侧新格式(头 104 + 型号标识 + SHA-256 文件尾)。
- Stb:kHeaderSize 104、kSha256Size 32;SHA-256 实现(FIPS 180-4,含标准测试向量验证);
fill_model_id(name+version 拼 32 字节补 '\0');StbView 解析新格式 +
model_id()/model_matches()/sha_ok()(数据段不含尾、缺尾报错)
- Codegen:assemble_image 写型号标识(偏移 72)+ 文件尾 SHA-256
- main.cpp:--disasm 显示 model/sha;写后自检(ok+sha+型号匹配,失败报错)
- 测试:machine_test +SHA-256 已知向量(空串/abc)与型号标识断言(53 断言);
codegen_test data_len 断言 +32(SHA 尾);ctest 12/12
- 验证:line1 288 字节 model=STATOR1 sha=ok;篡改一字节 sha=BAD
|
2026-08-21 22:20:35 +08:00 |
|
Admin
|
728ed9e71f
|
指令配置定案更新:最终架构 + .stb 格式冻结修订。
- 指令配置.md 重写:架构图(machine.toml 只给编译器、vm 不读配置、isa 归执行器只管指令)、
决策清单 9 项、TOML 草案(meta/type 别名+range+tag/op/fb)、类型系统(基元内置+值域+tag)、
.stb 加固(型号标识[32]+SHA-256 文件尾各实现一份)、强校验清单、加东西流程、8 步执行计划、
4 项实现前确认
- 指令与映像.md:头 72→104 字节(型号标识[32] 偏移 72)、文件尾 SHA-256[32],12.13 修订注记
- stb文件格式.md:12.13 修订注记(落地后字节数字重新生成)
|
2026-08-21 22:00:44 +08:00 |
|
Admin
|
5bcab6791f
|
指令配置定案:两大分类(PLAIN/INSTANCE)+ FB 注册并入 ops.txt。
- 三层分类:class(操作对象)→ format(操作数形态)→ 参数名(语义)
- op 行加 class 字段(PLAIN 26 条 / INSTANCE 8 条 CAL_*),类别-格式互锁校验
- fb 行登记内建 FB 布局(8 个),cal_opcode 与 op 行强校验一致
- 加 FB = 配置文件一行 + VM 语义 case,编译器免重建;执行计划更新为 7 步
|
2026-08-21 21:09:23 +08:00 |
|
Admin
|
b86a9eaf07
|
规划指令配置文件(ops.txt):登记唯一事实来源 + 强校验 + 屏蔽机制。
- Doc/isa/指令配置.md:格式(全属性必填)、OpTable(解析+与枚举强校验)、
各端接线(STCompiler --ops 编译路径必填/屏蔽传导;BytecodeExecutor 可选加载/Disabled 故障)、
加指令/屏蔽流程、7 步执行计划
- FB 注册并入 ops.txt 列为待讨论(未定案)
- 索引登记
|
2026-08-21 20:58:17 +08:00 |
|
Admin
|
26256a36b9
|
扩充内置功能块为 8 个:TON/TOF/TP/CTU/CTD/CTUD/R_TRIG/F_TRIG。
- isa:CAL_* 操作码连续占 24..31(CALL/RET 后移为 32/33,kOpCount=34);disasm 支持 5 个新操作码
- 词法/语法/链接:新 8 个关键字与冻结布局(TP=in/pt/q/et、CTD=cd/ld/pv/q/cv、
CTUD=cu/cd/r/lu/pv/qu/qd/cv、R_TRIG/F_TRIG=clk/q)
- VM:do_cal 全 8 个语义(TP 脉冲、CTD 递减、CTUD 双向+装载、R_TRIG 上升沿、F_TRIG 下降沿);
edge_prev_ 每槽 2 字节存边沿上次输入;exec_one 分发补 5 个新操作码
- 验证:TP 30ms 脉冲 2 周期、CTD 装载+递减到 q=1、CTUD cu/cd 双向、R/F_TRIG 交替;
ctest 11/11 全绿
- 文档:指令与映像/词法/初步计划/符号表与链接/指令执行/扫描周期/使用说明 同步
|
2026-08-21 20:38:27 +08:00 |
|
Admin
|
66d9c6c548
|
12.11 闭环:二十用例点亮 + 单步观察。
- cases_test:tests/cases/01..20 逐一跑完整管线(解析→链接→类型→码→VM 周期),
按 EXPECTED.md 期望断言:13 正例运行通过(含双周期可重复)、06 CycleLimit、6 负例报错类别
- BytecodeExecutor --step:采样 I → 逐指令打印 pc/fn/反汇编 + 执行后非零寄存器 → I/Q
- Machine 补 header()/ended()/nregs()/cur_instr() 观察接口
- ctest 11/11(cases_all 20 用例点亮);line1 回放 0/1 组合 Q 正确、单步 I=[0 1]→Q=[1]
|
2026-08-21 20:31:14 +08:00 |
|
Admin
|
00565f035d
|
12.10 双可执行接线:编译产出 sidecar,BytecodeExecutor 跑周期。
- 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
|
2026-08-21 20:26:28 +08:00 |
|
Admin
|
ce948451e0
|
12.9 步骤 0:数据段改 8 字节定宽槽(方案 a)。
- 指令与映像.md / 寄存器码.md:slot 语义 = 槽号(数据偏移 = 槽号 × 8),取消变宽对齐与 global_offset 映射
- Codegen.cpp:删除 width_of/align_up/global_offsets_;layout_data/layout_fb_instances 按槽号布局(字段 = 槽序号)
- stb文件格式.md:line1 真实字节更新(224B、56B 数据段、starter 槽 4/5/6)
- codegen_test:断言更新(槽号化 + 数据区字节数),189 断言 9/9 全绿
|
2026-08-21 20:01:21 +08:00 |
|
Admin
|
cd417cd27b
|
12.9 执行计划写进扫描周期.md。
- 步骤 0:数据段 8 字节定宽槽(方案 a)——文档/codegen/测试三处落地
- 步骤 1~7:Machine.h API、译码 switch、CALL/RET 帧栈与故障、
定时器 Δt 推进、可观察性基础、vm_test(用例 06/17/18/20 + 确定性)、验证提交
- 指令执行语义指向指令执行.md
|
2026-08-21 19:58:03 +08:00 |
|
Admin
|
3c42a72e86
|
新增指令执行流程文档(12.9 前置)。
- Doc/vm/指令执行.md:执行模型、帧/调用栈(CALL/RET 复制 r0..r7)、值表示约定、
8 字节定宽槽访问、29 条指令执行表、跳转语义、cycle_limit 计数、
CAL_TON/TOF/CTU Δt 推进、五类故障
- line1 MAIN 逐指令推演(I0_0=1、stop=0、急停=0 → Q0_0=1,对照真值表)
- 索引登记
|
2026-08-21 19:50:39 +08:00 |
|
Admin
|
ffb64d2063
|
使用说明补充 --disasm 反汇编用法。
|
2026-08-21 13:55:47 +08:00 |
|
Admin
|
17c62f0a1f
|
新增 .stb 映像文件结构说明(line1 真实字节拆解)。
- Doc/isa/stb文件格式.md:段布局图、17 字段头表、常量/函数/字节码/FB/数据各段
- 用 line1.stb(184 字节)逐段核对实际值:函数表 2 行、MAIN 指令字节、数据段全局+实例块
- 标注与执行器的关系(sidecar 不含在映像);索引与 isa README 登记
|
2026-08-21 13:40:20 +08:00 |
|
Admin
|
eb6829b9b9
|
新增 STCompiler 使用说明文档。
- 构建 / 用法(-o 产出 .stb)/ 退出码 / line1 示例
- project.toml 字段表、ST 子集支持范围与 v1 限制清单
- 编译管线五类错误前缀与示例;样例与测试索引;当前状态
- compiler/README 与 Doc/索引 登记
|
2026-08-21 11:55:36 +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
|
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
|
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
|
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
|
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
|
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
|
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
|
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 |
|
 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
|
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 |
|