Commit Graph
49 Commits
Author SHA1 Message Date
Admin 59d7ff3159 阶段1-1:指令与映像.md 重写为 V2 规格(STATOR2)
- §2 特性总表(变长指令/前缀分区/func/栈方案C/除法A)
- §3 指令编码(前缀分区表 + func 位段 + 操作数区位号 + uses_* 直推)
- §4 寄存器与调用栈(帧按 nregs、max_stack、递归编译期报错)
- §5 类型系统(19 类型→func 映射、BOOL 强制、日期表示)
- §6 指令语义(除法 A、浮点 IEEE、跳转字节化、内建 FB 14 条)
- §7 数据模型(槽表→值区)、§8 映像格式(头 128B/段序/校验)
- §9 sidecar、§10 反汇编(类型后缀)、§11 目录、§12 实现约定
2026-08-25 11:29:15 +08:00
Admin 53df69f4be 文档:阶段1规格总览(V2 主参考)——定案速览 + 三份规范重写任务 + 延后项
- §1 阶段 1 任务(重写指令与映像/指令配置/stb文件格式)
- §2..5 定案速览:指令编码/数据模型/执行语义/映像格式
- §6 machine.toml V2 schema 方向(N5,阶段 1 内定)
- §7 延后项(N1..N4、C5);§8 参考文档索引
2026-08-24 16:18:57 +08:00
Admin 3431f83e7c 文档维护:C1/C3/C6 行同步定案标记、§9.2 标注全部闭合、历史记录修正 2026-08-24 16:18:00 +08:00
Admin 638e0ef058 指令集优化:整数除法语义 A 定案写入(除零返回被除数、MIN/-1 饱和、截断除法、MOD 符号随被除数) 2026-08-24 16:17:00 +08:00
Admin 146abd2929 内建 FB 字段表终稿:14 条 IEC 风格字段 + 对齐/偏移/大小(C3/C6 闭合)
- SR(S1/R/Q1 置位优先)、RS(SET/RESET1/Q1 复位优先)、PWM(in/pt/duty/q/et)、
  RTC(enable/date/tod)
- 字段布局终稿(1/2/4/8B 对齐):TON 32B、CTU 8B、DCTU 16B、CTUD 10B、DCTUD 16B、
  TRIG 2B、SR/RS 3B、PWM 32B、RTC 12B
- RTC 时钟源 = 虚拟时钟(周期×dt_ms,确定性);PWM/SR/RS 语义注记
2026-08-24 16:12:37 +08:00
Admin 7769b515b0 文档维护:§4 表格清理(A1/C2/C4 同步定案)+ version=2 成文 + 帧头/max_stack 细则
- M1~M3:A1(U12)、C2(U7)、C4(U14)行标记已定案
- §2.5 头布局:version=2(V2 格式,V1=1)单列
- §2.2 栈设计补全:帧头 {fn_id:u32, ret_pc:u32, ret_fn_id:u32} 12B;
  max_stack = MAIN + DAG 最坏路径 Σ(12+nregs×8),写入 @116
2026-08-24 16:09:09 +08:00
Admin 2cc09903c9 指令编码:CALL/CAL rd 恒 0 约定成文(U14) 2026-08-24 16:05:56 +08:00
Admin 721dfabf87 U13/U14 定案:DATE/TOD/DT 表示(DT={date:32|tod:32} 拼接)+ CALL/CAL rd 恒 0 —— 全部 U 项闭合,V2 规格冻结 2026-08-24 16:05:46 +08:00
Admin d38d78c942 指令集优化:U12 定案——元数据段 v1 0 长度占位(offset_meta=0),schema 延后 2026-08-24 16:03:27 +08:00
Admin 6869624f09 U10 定案:寄存器/调用约定维持 + 栈方案 C(预分配栈区 + max_stack 编译期算 + 双检查 + 递归编译期报错)
- §2.2 修正:256 = 寻址上限(非每帧分配数);帧按 nregs 动态分配
- 新增调用栈设计:max_stack@116(调用图最坏路径)、预分配零分配、
  字节/深度双检查、MAIN 帧常驻
- 递归 = 链接层环检测编译期报错(link error: recursive call)
- 编译器优化.md:max_stack 计算职责 + Linker 环检测
- §9.2 U10 闭合;影响面/决策历史同步
2026-08-24 16:00:45 +08:00
Admin 44370c448e 指令集优化:U8/U9 定案——槽表条目 8B({addr:u32,预留:u32})、值段 1/2/4/8B 对齐编译器保证 2026-08-24 15:48:32 +08:00
Admin c9d7c16d6d 指令集优化:U7 定案——头 128B 修正版(offset_meta 占位、values_size 命名、n_i/n_q/n_m 保留恒 0、n_slots 关系、16 对齐) 2026-08-24 15:47:07 +08:00
Admin c193c760ef 指令集优化:U6 定案——op 预算按指令集清单/指令编码文档方案(前缀分区) 2026-08-24 15:41:58 +08:00
Admin c9024a060b U5 定案:内建 FB 14 条全部 v1 实现(6 计数拆条 + 定时/触发 5 + SR/RS、PWM、RTC 3)
- 指令集清单 §8:SR/RS、PWM、RTC 状态 扩展→核心
- 指令集优化:§9.2 U5 闭合、§4 A3 行更新、决策历史补记
2026-08-24 15:40:55 +08:00
Admin af7054480f 指令集优化:U4 定案——结构体 v1 只留编码不实现语法(预留) 2026-08-24 15:38:04 +08:00
Admin a6b6990834 指令集优化:清零已确认/作废项(U1/U2/U3/U11/U15/U16 标记闭合,A3 修正为 fb 表拆条,K 清单补 K24..K26)
- U1 作废(fmt 位段取消);U2/U3 被前缀编码取代;U11 已定案(010 101 分区)
- U15 被 func=0 取代;U16 随 K7 确认
- §4 A3 行修正:计数宽度 = fb 表拆条(U5 待最终确认)
- §9.1 补 K24 前缀分区 / K25 fmt 取消 / K26 MOVE 语义
2026-08-24 15:37:17 +08:00
Admin ee1e06c628 指令编码:010 区也改前缀分区(形态位3+子op2),全部形态前缀直推、零查表
- 010 000/001/010/011/100/101 = IMM/SLOT/JMP/JC/CALL/CAL
- 8 条指令编码更新:LOADK=01000000、LOAD=01000100、STORE=01000101、
  JMP=01001000、JT=01001100、JF=01001101、CALL=01010000、CAL=01010100
- uses_* 全部前缀直推(无查表);三份文档同步
- 010 区预算:6 形态区 × 4 + 2 预留形态区
2026-08-24 15:33:26 +08:00
Admin 1c0c4d02f2 指令集优化:§2.1 同步前缀分区方案(fmt/type 位段表述更新为前缀分区+func) 2026-08-24 15:31:14 +08:00
Admin 134f1748ec 指令编码:fmt 位段取消,形态改由前缀分区表达(Q1=010 查表 / Q2 空位待定 / Q3 全组分区)
- 前缀分区:11=RR、10=NONE、011=RRR、010=其他8条(查表)、0010=SLOT+off、
  0011=IMM64、0001=预留(32B)
- 字节 1 = [func:4 | 空:4](空位待全部编码后定)
- 指令集清单:全部 72 行编码按新分区重排;§1 位号表/位图更新
- uses_* 推导:前缀直推 + 010 区查表;编译器优化/指令集优化同步
- op 预算:RR 21/64、NONE 2/64、RRR 26/32、其他 8/32、SLOT+off 8/16、IMM64 1/16
2026-08-24 15:30:59 +08:00
Admin fda4f7a3ec 指令集清单:新增 §1 fmt 格式与字段位号(opcode/func/imm/rs1/rs2/rd 逐位标注)
- 1.1 通用头部位号表(长度前缀/opcode/func/fmt)
- 1.2 fmt 位号总表(11 形态 + 预留,操作数区 bit16 起)
- 1.3 各位图:RR/RRR/IMM/SLOT/JMP/JC/CALL/CAL/NONE/SLOT+off/IMM64
  逐位标注(含 pad 填充位);32B 预留格式待定
- 16B 形态分配 fmt 9(SLOT+off)/10(IMM64);指令编码.md 同步
- 原指令章节顺延为 2..12
2026-08-24 15:01:54 +08:00
Admin ed78f06e29 指令集清单:全部指令按 RISC-V 式编码(前缀+op / func / fmt)
- 4B 组 23 条(MOVE/NOP/NOT/RET/算术单目/浮点/舍入/CONV)
- 8B 组 34 条(算术/逻辑/移位/位操作/CMP/数据/调用/跳转)
- 16B 组 10 条(字段访问/LOADK64/字符串/数组长度)
- 32B 组 6 条预留(JTBL/复杂字符串/数组索引)
- func 语义按指令族(MOVE=宽度、LOAD/算术=全矩阵、浮点单目=8/9)
- 内建 FB fb_id 0..13(TON..RTC);op 预算余量表
2026-08-24 14:45:35 +08:00
Admin 5b10c2c826 文档:新建指令编码.md——RISC-V 式 op+func 编码定案存档
- 前缀长度组(1/01/001/0001 定 4/8/16/32B)+ op 按组分治
- 字节 1 = [func:4|fmt:4];func 10 组合(宽度×符号+F32/F64)语义随 op
- fmt 4 位 9 格式(格式合并作废,CALL/CAL 独立)
- 19 类型 → 10 func 编译期映射;BOOL 0/1 编译器强制
- 与 RISC-V 对照表 + 决策历史
2026-08-24 14:43:16 +08:00
Admin 21c4b953f9 文档:指令集清单章节编号独立化 + 头部去重 2026-08-24 14:08:40 +08:00
Admin 770e92d109 文档:指令集清单拆分为独立文档(Doc/isa/指令集清单.md),优化文档保留引用 2026-08-24 14:08:34 +08:00
Admin e98054706c 指令集优化:§10 全功能指令集清单(草案,10 类 + op 预算)
- 数据搬运/逻辑位运算/算术/比较/转换/控制流/内建FB/字符串/数组/系统
- 按长度组(前缀编码)与格式标注,状态列区分核心(v1)/扩展/预留
- 内建 FB 表 11 条核心(含 DCTU 双字)+ SR/PWM/RTC 扩展
- op 预算核对:4B组128 / 8B组64 / 16B组32 / 32B组16,各组远超需求
2026-08-24 14:07:59 +08:00
Admin a91528a228 指令集优化:新增 §9 确认核验清单(K1..K23 已确认 / U1..U16 待确认,未回答≠同意) 2026-08-24 13:48:06 +08:00
Admin 8f7140be64 指令集优化:B1/B2/B4 定案(1 CAL+fb_id:16、领域指令不进指令集)、C1..C6 未定项记录 2026-08-24 11:57:38 +08:00
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 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 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 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 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 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 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 583f14967a 冻 isa 的指令编码、映像布局与定宽类型,计划改为引用该规范。
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-18 17:18:30 +08:00