Admin
|
92e91350cc
|
步骤4:用例 21_var_temp(VAR_TEMP 每周期重置语义)+ 文档更新 + 修复 store_target STORE 缺 func 隐藏 bug
|
2026-08-26 18:01:08 +08:00 |
|
Admin
|
536ad1a96b
|
步骤3:Codegen VAR_TEMP——初值装载(emit_temp_init)+ FB 内联 Temp 固定寄存器(nlocals 隔离临时区)+ VarRef/赋值 fallback
|
2026-08-26 17:58:32 +08:00 |
|
Admin
|
94634dc0b0
|
步骤2:VAR_TEMP 链接层(FB 布局排除 Temp 字段 + 顶层防御校验 + scope 符号映射 Local)+ linker_test
|
2026-08-26 17:55:24 +08:00 |
|
Admin
|
aa0c66780c
|
步骤1:VAR_TEMP 词法+语法支持(token/关键字/VarSection::Temp/保留字放行)+ 测试
|
2026-08-26 17:53:25 +08:00 |
|
Admin
|
6fa4eda020
|
阶段5-5:全量验证表留档(20 用例编译+执行+line1 真值表,全部通过)
|
2026-08-26 11:38:38 +08:00 |
|
Admin
|
38202fd21e
|
阶段5-4:executor --sidecar 显式指定 I/O 绑定文件(缺省同名推导不变,向后兼容)
|
2026-08-26 11:34:11 +08:00 |
|
Admin
|
7e95e8200e
|
阶段5-3:用例反汇编对照.md 的 LREAL 缺陷条目更新为已修(5-1)
|
2026-08-26 11:25:03 +08:00 |
|
Admin
|
84de006665
|
阶段5-2:文档收尾——vm 指令执行/扫描周期、compiler 寄存器码/符号表/STCompiler说明、executor 入口全部更新为 V2
|
2026-08-26 10:40:20 +08:00 |
|
Admin
|
98d2e86dca
|
阶段5-1:修 LREAL 字面量装载(compile_expr 携带目标 func,F64/F32 位模式区分)
|
2026-08-26 10:26:34 +08:00 |
|
Admin
|
bc10307e0a
|
阶段4-3:executor V2 适配(cur_instr_bytes/slot_addr,修 V1 定宽槽残留)
|
2026-08-26 10:20:46 +08:00 |
|
Admin
|
5eda33fed6
|
阶段4-2c:vm_test V2 重写(EMIT 宏/手拼 4 测试/槽宽读写)+ slot_addr 公开访问器
|
2026-08-26 10:19:47 +08:00 |
|
Admin
|
06ff7d8359
|
阶段4-2b:vm/Machine V2(变长取指/槽表两级/栈方案 C/CAL 15 条)
- 变长取指(instr_len 前缀定长)、译码(前缀分区+func+uses_* 直推)
- 槽表两级访问:slot→slot_addr→值区按 func 读宽/扩展、写宽(含 F32/F64 位模式)
- 栈方案 C:预分配 max_stack、帧头 12B(fn_id/ret_pc/ret_fn_id)+ regs 指向栈区、
r0..r7 全宽复制、字节+深度 64 双检查、MAIN 帧常驻、周期结束回退 sp
- 指令语义:MOVE(func 宽度高位清 0)、LOADK(常量 8B 按 func)、NOT 逻辑非、
AND/OR/XOR 逐位、算术(各宽度饱和模板+无符号+浮点 IEEE)、CMP(按 func 符号)、
跳转(off 字节相对下一条)、CALL/RET 帧
- CAL 15 条 fb_id 分派:TON/TOF/TP/CTU/DCTU/CTD/DCTD/CTUD/DCTUD/R_TRIG/F_TRIG/
SR/RS/PWM(duty×pt 高电平)/RTC(虚拟时钟:周期×dt_ms,1970 纪元)
- 边沿检测 edge_prev_(每槽 2 字节)
- 验证:line1 全链路(I 采样→FB→短路→Q=1 真值表一致)、急停 Q=0、
13_call x=7、07 算术 42/10/32/eq、05 while n=10
- 状态:vm_test(48 处)/executor(1 处)待 4-2c/4-3
|
2026-08-26 10:03:40 +08:00 |
|
Admin
|
dbedc17032
|
阶段4-2a:vm/Image V2(头 128B/6 段校验/槽表访问器)
- ImageHeader:V2 字段(offset_slots/offset_values + n_slots/values_size/
offset_meta/max_stack);kModelVersion=2(STATOR2)
- 段校验:const/funcs/code/slots/values + meta=0 空段处理、尺寸一致性、对齐
- 常量表 8B 无 tag;FuncRow.code_len 字节;slot_addr/slots_bytes 访问器
- 验证:V2 产物解析 ok、model_matches(STATOR,2)/sha 校验通过
- 状态:Machine.cpp 仍破(4-2b)
|
2026-08-26 09:59:18 +08:00 |
|
Admin
|
4f3da55ed7
|
阶段4-1:isa 重构 V2 完成(Types/Op/Instr/Encode + isa_test 91 checks)
- Types.h:func 宽度/符号表(kFuncWidth/kFuncSigned)、饱和模板(各宽度
__int128 中间量 + 除法 A:除零返回被除数/MIN/-1 夹界/截断)、删 TypeTag
- Op.h/.cpp:前缀分区 + 72 条指令表(与 machine.toml 强校验一致)、
uses_rd/rs1/rs2 直推、kFbNames(15 内建 FB)
- Instr.h:变长 instr_len、位号 get/set(含 JC off@55..24、SLOT_OFF off@87..56)、
enc_* 发射器
- Encode.h/.cpp:decode/encode 往返、disasm(类型后缀 + CAL fb 名 + 未知 0x dump)
- isa_test V2:饱和边界/func 表/前缀定长/位号往返/编解码/disasm/uses_*/指令表
修复的实现 bug:find_op 字符串比较(指针==)、set_byte0 11/10 与 010xxx 分支、
CAL 字段约定((slot<<16)|fb_id)、disasm 未知前缀 used 长度
状态:vm/executor 编译暂破(V1 代码引用旧 isa 接口),4-2 同步
|
2026-08-26 09:56:43 +08:00 |
|
Admin
|
384e681ef3
|
文档:阶段4 执行步骤细化(4-1a..4-4,一次一个,isa/vm 连续完成)
|
2026-08-26 09:48:05 +08:00 |
|
Admin
|
7b4961f7ed
|
阶段3-5:编译器验证——13 正例源码↔反汇编对照 + --dump-map
- STCompiler --dump-map:编译后打印变量/槽映射(函数局部 r 寄存器、
全局 slot/off/type/func、实例 slot/off/fb/size/字段偏移)
- CodegenMap 输出结构(codegen_project 可选参数)
- 修复参数循环 bug(i+1<argc 漏掉末尾单参数选项)
- 结构自检(临时 stbcheck):13 用例寄存器/func/跳转/槽/长度全部通过
- 13 正例逐条对照全部通过,产出 Doc/compiler/用例反汇编对照.md
- 已知缺陷记录:LREAL 字面量装载按 REAL(TODO)
|
2026-08-26 09:47:24 +08:00 |
|
Admin
|
b19a61aabf
|
阶段3-4:新类型运算验证 + 修复(011 前缀位、func 大小写、位串 AND/OR)
新类型运算验证(综合用例全部正确):
- REAL 算术 ADD.F32、LREAL 算术 ADD.F64
- TIME+ ADD.I64、TIME 比较 CMP_GT.I64
- DATE/TOD/DT 比较 CMP_GT.U32/U32/U64
- DINT 算术 ADD.I32、UDINT 字面量装载+截断
- WORD 位串 AND(短路 JF+MOVE)
- 负例:UINT 溢出拦截
修复的 bug:
1. set_byte0 '011' 分支 0x40→0x60(RRR 指令被误判为 010 区,
ADD 等显示错乱)——阶段 2 遗留
2. Codegen func_of_name 大小写不敏感(符号表小写/type 表大写,
否则 REAL 等返回 func 0)
3. Typecheck AND/OR 支持位串(BOOL 逻辑或 bit 按宽度逐位)
已知缺陷(记录):LREAL 字面量装载按 REAL(LOADK.F32),
ADD.F64 运算位模式错位——需 compile_expr 携带目标 func(TODO)。
|
2026-08-26 09:40:12 +08:00 |
|
Admin
|
2c5852797a
|
阶段3-3:新类型语法验证 + 修复(parse_primary 补字面量分支、负号折叠、NEG 指令)
- Parser:parse_primary 补 FLOAT_LIT/DATE_LIT/TOD_LIT/DT_LIT
(表达式路径,此前仅初值路径支持)
- Typecheck:literal_range_ok 支持 Neg(LitInt/LitReal) 折叠负号
(UINT := -1 → 'negative literal for unsigned type')
- Codegen:Neg → NEG 指令(RR 4B,func 按操作数类型)
验证通过:
- 19 类型声明 + 字面量:DINT/REAL(1.5)/LREAL(2.5e3)/BYTE(16#FF)/UINT(8#17)/
WORD(2#1010)/DATE(D#2026-8-24)/TOD(TOD#12:30:00)/DT(DT#...)/BOOL/TIME(T#1s250ms)
- 负例:UINT:= -1 越域、INT:= DINT 禁隐式、BOOL:= 2 越界、
DINT:= 16#FFFFFFFF 溢出、D#2026-13-40 日期非法
- ctest 12/14(vm/cases 待阶段 4)
|
2026-08-26 09:35:39 +08:00 |
|
Admin
|
316b252afc
|
文档:阶段4-执行侧V2 待办清单(isa 重构/vm 同步/executor/全链路/文档收尾)
|
2026-08-26 09:33:23 +08:00 |
|
Admin
|
8ded7090c8
|
阶段3-2:codegen_test V2 重写(去 isa 依赖,L5 范围断言)
- build_case 完整编译管线(parse→load→link(cfg)→check(cfg)→codegen(cfg))
- disasm_lines 按 instr_len 迭代生成指令文本
- 7 用例断言:头字段(version=2/STATOR2/max_stack/n_slots/values_size)、
常量表 8B 无 tag、CAL.TON/STORE_OFF 字段访问、CALL+max_stack、
line1 全链路(n_slots=5:4 全局+1 实例)、跳转回填、全局初值
- CMake 恢复 codegen_test(链 compiler 去 isa);ctest 12/14
|
2026-08-26 09:31:53 +08:00 |
|
Admin
|
6be2873c88
|
阶段3-1:编译器语言层 V2 完成(19 类型/字面量扩展/禁隐式转换/配置驱动 FB)
Lexer V2:
- 19 类型关键字(BOOL..DT);FB 名不再设关键字(IDENT)
- FLOAT_LIT(1.5/2.5e3)、进制前缀(2#/8#/16# 换算十进制)
- 日期字面量 D#/TOD#/DT#(历法换算 1970 纪元、闰年、值域检查)
Parser V2:
- TypeRef 字符串化(TypeKind{Scalar,FbBuiltin,FbUser},名字小写)
- ExprKind 增 LitReal/LitDate/LitTod/LitDt;Expr.double_value
- IDENT 类型统一 FbUser(内建判定在 Linker 查 fb 表)
Typecheck V2:
- TType 19 + Unresolved(字面量未定型)
- 禁隐式转换(赋值/算术/比较严格同型)
- resolve_to:未定型→消费点定型+值域检查(BOOL 0/1、无符号负数、
溢出、浮点仅 REAL/LREAL);算术按 kind 允许(TIME 仅 ±)
- Call 实参按函数参数类型;check_project 加 cfg
Linker V2:
- FbField.type_name 字符串化;内建 FB 布局查 machine.toml [[fb]] 表
(删 8 个硬编码布局,带缓存);link_project 加 cfg
Codegen V2:
- 浮点/日期字面量(LOADK func 8/4/4/6;LitReal 按 REAL 装载,LREAL TODO)
- 算术/比较 func 按操作数类型(expr_func)
- TypeKind 连锁适配
main.cpp:link/check 传 cfg;--disasm 头 22 字段逐行中文注释(L5)
+ slots 节;StbView 补 offset_const/offset_funcs
测试适配:parser/linker/typecheck/vm/cases 适配新接口与 V2 语义。
ctest 11/13(vm_cycles/cases_all 待阶段 4)。codegen_test 仍剥离(阶段 3-2 重写)。
|
2026-08-26 09:29:31 +08:00 |
|
Admin
|
6ab2195a6b
|
阶段3文档:L5 定案——--disasm 头 22 字段一行一个+中文注释、新增 slots 节
|
2026-08-26 09:07:12 +08:00 |
|
Admin
|
250a0c9fac
|
阶段3文档:L4/L6/L7/L8 定案(字面量 AST / FB 三层判定 / TypeKind 字符串化 / Linker 查 toml)——决策点全部闭合
|
2026-08-26 08:58:19 +08:00 |
|
Admin
|
1335283279
|
阶段3:A4 修订——V2 支持日期字面量(D#/TOD#/DT#,纪元 1970,无小数秒,年 1..9999)
|
2026-08-26 08:53:07 +08:00 |
|
Admin
|
a7f89dc180
|
阶段3文档:L2/L9/L3 定案——变量禁隐式转换、整数/浮点字面量按上下文适配(冲突报错)、时间字面量格式要求
|
2026-08-26 08:48:24 +08:00 |
|
Admin
|
65ccd6c2b7
|
阶段3文档:L2 定案(禁止任何隐式类型转换,字面量类型化)+ 新增 L9(字面量类型化语法)
|
2026-08-25 20:29:11 +08:00 |
|
Admin
|
f7de78e528
|
文档:阶段3-语言层V2 计划与待定决策点(L1..L8,逐个解决)
|
2026-08-25 20:26:00 +08:00 |
|
Admin
|
4785cf3e3b
|
阶段2-6:V2 生成侧 bug 修复与验证收尾
- Codec:set_byte0 的 11/10 前缀位修正(0xC0/0x80);新增 JC 形态偏移
专用读写(off@55..24,字节 3..6)——修复 JF rd 被 off 覆盖
- Stb:offset_meta=0(空段)时值段大小校验按 SHA 尾计算(修复
values segment size mismatch)
- Codegen:实例字段带 func(field_func),LOAD_OFF/STORE_OFF 按字段
类型设 func(pt=TIME → I64)
- main.cpp:--disasm 按 instr_len 迭代变长字节码
- 验证:13 个正例全部编译出 V2 产物 + disasm 自读通过(RET/CAL.TON/
STORE_OFF.I64/JF 偏移等抽查正确);ctest 11/13(vm/cases 待阶段 4)
|
2026-08-25 20:23:32 +08:00 |
|
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 |
|
Admin
|
246fe09646
|
阶段2-3:Codec V2 化(变长指令字编解码 + 配置驱动 disasm 类型后缀)
- instr_len 前缀定长(1/01/001/0001 → 4/8/16/32B)
- prefix_of/op_of/func_of + 全部位号 get/set(rd/rs1/rs2/imm32/slot32/off32/
fn_id32/fb_id16/cal_slot32/off32_hi/imm64)
- set_byte0 按前缀写(11/10/011/010xxx 形态位/0010/0011/0001)
- disasm:find_op_by_key 查配置;full/float/dst 类显示 .TYPE 后缀
(U8/I8/.../F64);CAL 打印 fb 名(CAL.TON s5);未知输出 ??? 0x hex
- main.cpp --disasm 调用适配(TODO V2 待 Stb 重写)
- 状态:编译仅剩 Codegen.cpp(84 处 V1 残留,下一步阶段2-5 重写)
|
2026-08-25 20:08:37 +08:00 |
|
Admin
|
a4335693d4
|
阶段2-2:MachineConfig 重写为 V2(强校验 5 项)+ TypeInfo/machine_test V2 适配
- ConfigType:base/kind/func(V1 的 tag/range 删除);ConfigOp:prefix/op/fmt/
func_mode(V1 的 opcode/class 删除);ConfigFb:fb_id(V1 的 opcode 删除)
- 强校验:meta(version=2) / type 19 条全集·base 命中·kind 合法·func 与
(width,signed,float) 互锁 / op prefix 合法·prefix↔fmt 互锁·(prefix,op) 分区
唯一·func 类别·params 互锁 / fb 15 条全集·fb_id 唯一·字段命中 type 表 /
op-fb 互锁(CAL↔fb 表)
- TypeMeta:tag/range → func/kind
- machine_test:V2 断言(正例 68 op/19 type/15 fb + 14 个负例)
- 状态:compiler 库暂挂于 V1 Codec/Codegen/Stb/main(下一步按
Codec → Stb → Codegen → main 顺序 V2 化)
|
2026-08-25 20:04:49 +08:00 |
|
Admin
|
fc76fea47b
|
修正:内建 FB 实为 15 条(fb_id 0..14:TON..F_TRIG 11 + SR/RS/PWM/RTC 4),文档统一'14 条'→'15 条'
|
2026-08-25 19:59:39 +08:00 |
|
Admin
|
dd5e69d2f7
|
阶段2-1:machine.toml 重写为 V2 schema(19 type + 68 op + 14 fb)
- type 表:19 条 IEC 类型(base 基元 + kind 语义 + func 映射,TOD=func4 修正)
- op 表:prefix+op 分区编码(4B RR 21 条/NONE 2 条、8B RRR 26 条/010 区 8 条、
16B SLOT+off 8 条/IMM64 1 条、32B 预留 6 条)+ fmt + func 类别
(none/width/uint/full/float/dst)+ params 互锁
- fb 表:14 条(fb_id 0..14,含 SR/RS/PWM/RTC 字段,字段类型命中 type 表)
- 注:MachineConfig 仍为 V1 解析,下一步同步(machine_test 暂红预期内)
|
2026-08-25 19:59:24 +08:00 |
|
Admin
|
7745dadd2d
|
阶段1-3:stb文件格式.md 重写为 V2 结构(头 128B/槽表段/值段/元数据段)
- 段序:常量表→函数表→字节码→槽表段→值段→元数据段→SHA
- 头 128B 全字段表(version=2、n_slots/values_size/offset_meta/max_stack)
- 常量表 8B 无 tag、函数表 code_len 字节化、变长指令段 16 对齐
- 槽表 8B {addr,预留}、值段变宽紧凑(FB 布局引用清单 §8.1)
- 读取校验链(结构/SHA/型号);line1 真实拆解标注阶段 5(C5)
|
2026-08-25 17:35:29 +08:00 |
|
Admin
|
7caa407485
|
阶段1-2:指令配置.md 重写为 machine.toml V2 schema(N5 定稿)
- op 表:prefix+op(分区内编号)替代 opcode;fmt 与前缀互锁;func 类别
(none/width/full/float/dst)
- type 表:19 条(base 基元别名 + kind 语义 + func 显式映射,互锁强校验)
- fb 表:14 条(fb_id 0..14 + 字段类型,布局偏移编译期按 1/2/4/8 对齐算)
- 强校验清单 5 项 + 加东西流程 + 与 V1 schema 差异表
|
2026-08-25 11:55:05 +08:00 |
|
Admin
|
ec1df225e2
|
修正:TOD 为 4B 无符号,func = 4(非 6,与 DWORD/UDINT/DATE 同组);func 6 仅 LWORD/ULINT/DT
|
2026-08-25 11:54:41 +08:00 |
|
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
|
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
|
d109a3ca77
|
executor: 移除冗余 Image::from 前置校验,信任链统一由 Machine::create 报告
|
2026-08-24 09:04:46 +08:00 |
|
Admin
|
7aa2bbefcf
|
stb 头字段偏移常量表:消除 vm/compiler 两侧裸魔法数
- vm/Image.cpp:匿名空间 constexpr 偏移常量(kOffMagic..kOffModelId + 段内行偏移),
from/model_id/model_matches/func_row/const_entry 全部替换
- compiler/Stb.h:同值 inline constexpr 表(Codegen 写侧 + Stb 读侧共用)
- compiler/Codegen.cpp assemble_image:put_* 头字段/行内偏移替换
- compiler/Stb.cpp StbView:读侧偏移替换
- 两侧 static_assert:头大小 = 72 + 型号标识、字段偏移单调、行内布局自洽
|
2026-08-24 08:55:57 +08:00 |
|
Admin
|
d51dce4ae3
|
CMakePresets: 启用 compile_commands.json 导出(IDE/静态分析用)
|
2026-08-22 13:13:12 +08:00 |
|
Admin
|
351d6ef40c
|
executor: main 内部步骤块注释补充(参数解析/读映像/信任链/sidecar 路径/回放打开)
|
2026-08-22 10:45:26 +08:00 |
|
Admin
|
afb5d5b94a
|
executor 模块注释完善:Doxygen 风格(main.cpp 入口/usage/Binding/sidecar 解析/采样/单步)
|
2026-08-21 23:34:07 +08:00 |
|
Admin
|
b0aebe264e
|
compiler 模块注释完善:Doxygen 风格(Lexer/Parser/Linker/Typecheck/Project/MachineConfig/TypeInfo/Codec/Codegen/Stb/main 共 21 个文件)
|
2026-08-21 23:29:15 +08:00 |
|
Admin
|
fff7aef968
|
vm 模块注释完善:Doxygen 风格。
- Image.h/.cpp:头 104 布局逐字段、SHA-256 增量状态机(update/process/final)、
校验项清单(from)、型号标识契约、func_row/const_entry/data_len 等访问器语义
- Machine.h/.cpp:Fault 枚举逐项、create 校验顺序(解析→SHA→型号)、
调用约定(r0 结果/r1..r7 实参)、exec_one 取指/计数/分发流程、
do_call/do_ret 帧语义、do_cal 八 FB 字段布局、slot_get/set 边界契约
|
2026-08-21 23:21:51 +08:00 |
|
Admin
|
96607cfe75
|
isa 模块注释完善:Doxygen 风格。
- Types.h:定宽类型、TypeTag、饱和四则的 @brief/@param/@return
- Op.h:Op 枚举冻结约束、OpFormat/OpClass、OpDef/kOpDefs 表、三个查询函数
- Instr.h:指令字布局、pack/拆字段、按形态 enc_* 系列
- Encode.h/.cpp:Decoded 字段语义、encode/decode/disasm 契约
|
2026-08-21 23:19:08 +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
|
1168f5ae30
|
Merge branch 'dev_ops_config':指令配置(machine.toml)全流程。
- A:OpFormat/OpClass 显式化、machine.toml 落地、MachineConfig 强校验
- B:compiler 配置驱动化去 isa、类型元数据配置化、.stb 写侧(型号标识+SHA-256)
- C:isa 拆出 Image、vm 自读 + 型号/SHA 校验
- D:CLI --machine 接线、测试固化(14/14)、文档同步
|
2026-08-21 22:36:24 +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
|
40bfd175c4
|
阶段 D 步骤 10:测试固化(CLI 级 + 写侧自检)。
- codegen_test line1:compiler::StbView 自检(model_matches STATOR1 + sha_ok),
篡改一字节 → sha 校验失败
- CTest 新增:cli_compile(--machine 编译退出 0)、cli_missing_machine(缺参 WILL_FAIL)
- 冻结哈希确认:工程哈希只依赖源文件内容(0xc3fe4ae74ad45900 不变,compiler_test 通过)
- 全量 ctest 14/14 全绿(新增 2 个 CLI 用例)
|
2026-08-21 22:33:14 +08:00 |
|
Admin
|
a5f49caa94
|
阶段 D 步骤 9:CLI 接线收尾(--machine 仅编译/反汇编必填)。
- 打印模式(无 -o)不再要求 --machine(恢复 12.3 行为)
- 编译路径与 --disasm 必填 --machine,加载/校验失败报错退出
- 验证:打印/编译/disasm/缺参四种模式行为正确;ctest 12/12
|
2026-08-21 22:30:44 +08:00 |
|
Admin
|
b13585711a
|
阶段 C 步骤 8:vm 读侧型号匹配 + SHA-256 校验。
- vm/Image.cpp:执行器侧 SHA-256 实现(与 compiler 各一份)、fill_model_id、
model_id()/model_matches()/sha_ok();data_len 不含 SHA 尾
- Machine::create:sha256 不匹配 → 'image sha256 mismatch';型号不匹配 →
'image model mismatch'(内建 kModelName=STATOR/kModelVersion=1),均拒绝
- vm_test:手拼映像填型号(修越界读 bug)+ compiler::sha256 填尾(95 断言);
新增篡改拒绝(sha256 mismatch)与型号不匹配(重算 SHA 后 model mismatch)用例
- 验证:line1 正常执行 Q=1;篡改一字节 → 执行器 'image sha256 mismatch' 拒绝;ctest 12/12
|
2026-08-21 22:29:33 +08:00 |
|
Admin
|
5fccbadaa8
|
阶段 C 步骤 7:isa 拆出 Image,vm 依赖收窄。
- 删 isa/Image.h + Image.cpp(ImageView/FNV/写文件/sidecar 不再属于 isa)
- vm 自实现只读视图 vm/Image.h/cpp:头 104(12.13)/段校验/缺 SHA 尾报错
(型号匹配与 SHA 校验留步骤 8);Machine 改用 vm::Image + vm::ImageHeader
- executor:本地读文件(替换 isa::read_stb_file)
- 测试:isa_test 删映像/FNV 部分;codegen_test/vm_test 改用 compiler::StbView /
vm::ConstEntry;vm_test 手拼映像适配新格式(头 104 + 尾 32 占位)
- 验证:line1 编译 288 字节 → BytecodeExecutor 回放 Q 正确;ctest 12/12
|
2026-08-21 22:24:57 +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
|
e187ed7b03
|
阶段 B 步骤 5:类型元数据配置化(TypeInfo)。
- TypeInfo.h/cpp:TypeMeta(配置别名 + 内建基元解析),查询大小写不敏感;
提供 width/is_signed/is_float/tag/has_range/value_in_range
- Codegen:layout_data 初值按 type_meta 的基元宽度/浮点写(删除手写宽度分支);
const_id 的 tag 改查 type_meta
- machine_test:+10 断言(BOOL 1B/range[0,1]/tag0、INT 2B 有符号、TIME 8B、大小写不敏感、未定义空)
- 验收:line1 224 字节 hash 0xc3fe4ae74ad45900 不变、ctest 12/12
|
2026-08-21 22:16:48 +08:00 |
|
Admin
|
447a8d0119
|
阶段 B 步骤 4:compiler 配置驱动化,去除 isa 依赖。
- Project.h 自带 IoBinding;Stb.h/cpp:compiler 侧 .stb 规范(常量/ConstEntry/FNV/StbView/读写/sidecar)
- Codec.h/cpp:指令字 pack/字段/配置驱动 disasm(format 表驱动)
- Codegen:opcode 全查 MachineConfig(E_* 发射器)、常量 tag 查配置类型、初值按基元宽度写、
映像拼装用 Stb 常量;codegen_project 增加 cfg 参数
- main.cpp:--machine <path>(编译/反汇编必填),--disasm 用 StbView+Codec
- CMake:compiler 不再链接 isa(仅 toml++ 私有);测试补链 isa(自身断言用)
- 验证:20 用例字节不变(hash 0xc3fe4ae74ad45900 相同)、ctest 12/12、缺 --machine 报错退出
|
2026-08-21 22:14:29 +08:00 |
|
Admin
|
44b5ecd46d
|
阶段 A 步骤 3:MachineConfig 加载层(toml++ + 强校验 5 项)。
- MachineConfig.h/cpp:解析 machine.toml → meta/types/ops/fbs 表
- 强校验:全属性必填、base 命中内建基元、range min≤max、tag 契约(BOOL=0/INT=1/TIME=2 唯一)、
opcode 唯一 0..255、类别-格式互锁(instance↔CAL)、params 数量与 format 一致、
fb.opcode 匹配 instance op、fb 字段类型命中 type 表
- 基元内置表(bit/int8..uint64/float32/64,宽度/符号/浮点)
- machine_test:38 断言(正例仓库表 + 9 类负例 + 最小配置),ctest 12/12
|
2026-08-21 22:09:39 +08:00 |
|
Admin
|
4dab914e7c
|
阶段 A 步骤 2:machine.toml 落地(meta/type/op/fb)。
- meta:STATOR v1(参与 .stb 型号标识)
- type 3 条:BOOL(uint8, range=[0,1], tag=0) / INT(int16, tag=1) / TIME(int64, tag=2)
- op 34 条:全属性必填,与 kOpDefs 逐条一致(26 PLAIN + 8 INSTANCE=CAL)
- fb 8 条:opcode 与 op 行一致,字段类型命中 type 表
- 核对程序通过:types=3 ops=34 fbs=8 ALL CONSISTENT
|
2026-08-21 22:07:04 +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
|
35dabf4c3b
|
步骤 1:OpFormat/OpClass 显式化 + disasm 表驱动。
- Op.h:新增 OpFormat(RR/RRR/IMM/SLOT/JMP/JC/CALL/CAL/NONE)与
OpClass(Plain/Instance)枚举;34 条编译期表 kOpDefs(name/format/class,
与 ops.txt 强校验的基准);mnemonic/format/op_class 查表
- Encode.cpp:disasm 按 format 表驱动输出(文本与之前逐条一致)
- 验证:11 个 ctest 全绿;表查询断言(8 个 INSTANCE=CAL、越界哨兵)
|
2026-08-21 21:13:36 +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
|
8c0fc4fe98
|
12.9 步骤 6:vm_test 固化(手工映像 + 编译器产物 + 确定性)。
- 手工映像:标量/跳转/数据区、CALL/RET 帧复制(r1/r2 实参 → r0 结果)、自调用 StackOverflow、越界槽 BadSlot、坏常量 BadConst
- 编译器产物:用例 01~09/13/15/17/18/20 跑周期断言(TON 第 3 周期 q=1、line1 真值表 4 组)
- 用例 06 CycleLimit;确定性:同一 I 序列两遍数据区逐字节一致
- step 单步:停在指令边界、cycle_count/regs 逐步核对
- ctest 10/10(vm_cycles 84 断言)
|
2026-08-21 20:22:36 +08:00 |
|
Admin
|
ada9e5f99e
|
12.9 步骤 4:定时器 CAL_TON/CAL_TOF/CAL_CTU。
- do_cal:内建布局冻结(TON/TOF: in/pt/q/et、CTU: cu/r/pv/q/cv,字段=槽序号×8)
- TON:in 真 → et+=dt(到 pt 停)、q=et≥pt;假 → 清零
- TOF:in 真 → q=1/et=0;掉电 → et+=dt、et≥pt → q=0
- CTU:cu 上升沿(ctu_prev_ 跨周期)→ cv+1;r 复位;q=cv≥pv
- 抽 slot_get/slot_set 复用(exec_one 的 LOAD/STORE 同步重构)
- 验证:TON 3 周期到 q=1、TOF 掉电延时 2 周期、CTU 交替上升沿到 cv=3、复位;line1 三组 I 组合 Q 正确 + 确定性两遍一致
|
2026-08-21 20:20:26 +08:00 |
|