From fc76fea47b42870f732acccf807c2bf00da96942 Mon Sep 17 00:00:00 2001 From: chentianya Date: Tue, 25 Aug 2026 19:59:39 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=EF=BC=9A=E5=86=85=E5=BB=BA?= =?UTF-8?q?=20FB=20=E5=AE=9E=E4=B8=BA=2015=20=E6=9D=A1=EF=BC=88fb=5Fid=200?= =?UTF-8?q?..14=EF=BC=9ATON..F=5FTRIG=2011=20+=20SR/RS/PWM/RTC=204?= =?UTF-8?q?=EF=BC=89=EF=BC=8C=E6=96=87=E6=A1=A3=E7=BB=9F=E4=B8=80'14=20?= =?UTF-8?q?=E6=9D=A1'=E2=86=92'15=20=E6=9D=A1'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Doc/isa/指令与映像.md | 4 ++-- Doc/isa/指令配置.md | 10 +++++----- Doc/isa/指令集优化.md | 4 ++-- Doc/isa/指令集清单.md | 2 +- Doc/isa/阶段1规格总览.md | 4 ++-- 5 files changed, 12 insertions(+), 12 deletions(-) diff --git a/Doc/isa/指令与映像.md b/Doc/isa/指令与映像.md index b87bda9..2dd4cbb 100644 --- a/Doc/isa/指令与映像.md +++ b/Doc/isa/指令与映像.md @@ -59,7 +59,7 @@ CMake 目标:`isa`(`STATIC`),无依赖;`vm` PUBLIC 链 `isa`。公开 | 工程哈希 | 源文件路径排序后对内容做 FNV-1a 64(非密码学) | | 完整性 | 文件尾 SHA-256[32];型号标识[32]@72 | | I/O 绑定 | **不进映像**;sidecar(`.runtime.toml`)绑定 var→槽号→channel/bit,粒度不变 | -| 内建 FB | 14 条(CAL + fb_id 16 位);字段布局见 [`指令集清单.md`](指令集清单.md) §8.1 | +| 内建 FB | 15 条(CAL + fb_id 16 位);字段布局见 [`指令集清单.md`](指令集清单.md) §8.1 | --- @@ -216,7 +216,7 @@ CMake 目标:`isa`(`STATIC`),无依赖;`vm` PUBLIC 链 `isa`。公开 - `CAL fb_id, slot`(rd 恒 0):内建 FB 调用,fb_id 查 [[fb]] 表 - 周期指令计数:每条 +1,超 `cycle_limit` → `CycleLimit` 故障 -### 6.6 内建 FB(14 条) +### 6.6 内建 FB(15 条) | fb_id | FB | fb_id | FB | |---|---|---|---| diff --git a/Doc/isa/指令配置.md b/Doc/isa/指令配置.md index 5d84efa..87c279a 100644 --- a/Doc/isa/指令配置.md +++ b/Doc/isa/指令配置.md @@ -1,7 +1,7 @@ # 机器定义文件(machine.toml V2) 指令集与类型的**唯一事实来源**,**只给编译器**(STCompiler/compiler)使用。执行器(vm)不读本文件——它是下位机程序,内建全部指令。 -V2 规格(STATOR2,阶段 1 定稿;N5 闭合)。schema 变更:opcode → 前缀分区 + op;class/format → fmt;CAL_* 8 op → 1 CAL + fb 表 14 条。 +V2 规格(STATOR2,阶段 1 定稿;N5 闭合)。schema 变更:opcode → 前缀分区 + op;class/format → fmt;CAL_* 8 op → 1 CAL + fb 表 15 条。 ## 架构 @@ -30,7 +30,7 @@ STCompiler → compiler(编码 opcode / 类型元数据 / FB 布局 全部来 1. **指令编码**:变长 4/8/16/32B;**前缀分区**表达长度与形态(`11`/`10`/`011`/`010 xxx`/`0010`/`0011`/`0001`) 2. **op 表**:`prefix + op`(分区内编号)替代 V1 的单一 opcode;`fmt` 与前缀互锁;`func` 类别表达数据语义 3. **类型**:19 种 IEC 类型(编译器内建基元别名 + kind 语义 + func 显式映射) -4. **FB**:14 条内建(fb_id 0..14),`[[fb]]` 表承载字段类型;CAL 指令 + fb_id16(V1 的 CAL_* 8 op 作废) +4. **FB**:15 条内建(fb_id 0..14),`[[fb]]` 表承载字段类型;CAL 指令 + fb_id16(V1 的 CAL_* 8 op 作废) 5. 新增指令/类型/FB:**只改配置 + 对应实现**,指令格式零变化(N2/N3 预留位已留) ## 配置文件格式(TOML V2) @@ -109,7 +109,7 @@ func = "none" params = [] enabled = true -# ---- 内建 FB(14 条;fb_id 唯一 0..14;字段类型命中 type 表;布局偏移编译期按 1/2/4/8 对齐计算) +# ---- 内建 FB(15 条;fb_id 唯一 0..14;字段类型命中 type 表;布局偏移编译期按 1/2/4/8 对齐计算) [[fb]] name = "TON" fb_id = 0 @@ -164,7 +164,7 @@ fields = [["enable", "BOOL"], ["date", "DATE"], ["tod", "TOD"]] 1. **meta**:`name` 非空、`version` = 2 2. **type**:19 条必填全集(BOOL..DT);`base` 命中内建基元;`kind` 合法;`func` ∈ 0..9 且与 base 的 (width, signed) 互锁 3. **op**:`prefix` 合法(11/10/011/010000..010101/0010/0011/0001);`prefix` 与 `fmt` 互锁(11↔RR、10↔NONE、011↔RRR、010000↔IMM、010001↔SLOT、010010↔JMP、010011↔JC、010100↔CALL、010101↔CAL、0010↔SLOT+off、0011↔IMM64);`op` 分区内唯一;`func` 类别合法(none/width/full/float/dst);`params` 数量与 fmt 互锁(RR=2、NONE=0、RRR=3、IMM=2、SLOT=2、JMP=1、JC=2、CALL=1、CAL=2、SLOT+off=3、IMM64=2);`enabled` 布尔 -4. **fb**:14 条必填全集(fb_id 0..14);`fb_id` 唯一;字段名唯一;字段类型命中 `[[type]]` 表 +4. **fb**:15 条必填全集(fb_id 0..14);`fb_id` 唯一;字段名唯一;字段类型命中 `[[type]]` 表 5. **op-fb 互锁**:`CAL`(010101)的 fb_id 由 `[[fb]]` 表提供——CAL 指令存在当且仅当 fb 表非空 ## 加东西的流程 @@ -186,4 +186,4 @@ fields = [["enable", "BOOL"], ["date", "DATE"], ["tod", "TOD"]] | 分类 | class(plain/instance)+ format | **fmt**(与 prefix 互锁) | | 数据语义 | tag(0/1/2) | **func** 类别(none/width/full/float/dst) | | 类型 | 3 条(BOOL/INT/TIME) | **19 条**(base/kind/func) | -| FB | 8 条(opcode 对应 CAL_*) | **14 条**(fb_id 0..14) | +| FB | 8 条(opcode 对应 CAL_*) | **15 条**(fb_id 0..14) | diff --git a/Doc/isa/指令集优化.md b/Doc/isa/指令集优化.md index 39c477d..9ade0d6 100644 --- a/Doc/isa/指令集优化.md +++ b/Doc/isa/指令集优化.md @@ -275,7 +275,7 @@ V2 的 op 位段仅 6 位(64 个),FB 占 8 个不划算,且 machine.toml - A2 定案:LOADK 用 type 位段解释常量值(与 LOAD 语义统一);常量表条目 8B 无 tag;IMM64 预留不发射 - A3..A8 定案(2026-08-24):计数器单/双字两种;DATE 字面量不支持;TIME/浮点运算按推荐;sidecar 一致;disasm 类型后缀;type 表=基元别名(REAL→float32、LREAL→float64) - A9 定案:按上下文适配、默认 DINT 兜底(用户确认) -- U5 定案:内建 FB 14 条全部 v1 实现(6 计数拆条 + TON/TOF/TP/R/F_TRIG + SR/RS、PWM、RTC) +- U5 定案:内建 FB 15 条全部 v1 实现(6 计数拆条 + TON/TOF/TP/R/F_TRIG + SR/RS、PWM、RTC) - U6 定案:op 预算按指令集清单/指令编码文档方案(前缀分区) - U7 定案:头 128B 修正版(offset_meta 占位、values_size 命名、n_i/n_q/n_m 保留恒 0、n_slots 关系、16 对齐) - U8 定案:槽表条目 {addr:u32, 预留:u32} 8B @@ -336,7 +336,7 @@ V2 的 op 位段仅 6 位(64 个),FB 占 8 个不划算,且 machine.toml | ~~U2~~ | ~~长度组映射~~ | **已被前缀编码取代**(11/10/011/010xxx/0010/0011/0001,见指令编码.md §3) | | ~~U3~~ | ~~字节布局~~ | **已被取代**:`[前缀+形态分区\|op] + [func:4\|空:4]`(指令编码.md §2) | | ~~U4~~ | ~~结构体 v1 只留编码不实现语法~~ | **已定案(预留)**:只留编码路径(LOAD/STORE 16B 变体 + 元数据段),语法 v1 不实现 | -| ~~U5~~ | ~~B3 计数拆条~~ | **已定案**:fb 表拆条 11 条(CTU/DCTU/CTD/DCTD/CTUD/DCTUD 6 计数 + TON/TOF/TP/R_TRIG/F_TRIG),名字即宽度;**清单内建 FB 全部 14 条(含 SR/RS、PWM、RTC)v1 实现** | +| ~~U5~~ | ~~B3 计数拆条~~ | **已定案**:fb 表拆条 11 条(CTU/DCTU/CTD/DCTD/CTUD/DCTUD 6 计数 + TON/TOF/TP/R_TRIG/F_TRIG),名字即宽度;**清单内建 FB 全部 15 条(含 SR/RS、PWM、RTC)v1 实现** | | ~~U6~~ | ~~op 预算~~ | **已定案**:按指令集清单.md §12 / 指令编码.md §3 方案(前缀分区预算:RR 21/64、NONE 2/64、RRR 26/32、010 区 8/24、SLOT+off 8/16、IMM64 1/16、0001 预留 6/16) | | ~~U7~~ | ~~头 128 字节布局~~ | **已定案(修正版)**:17 字段表述、values_size 命名、offset_meta @112(v1=0)、n_i/n_q/n_m 保留恒 0、n_slots 关系定义、16 对齐(见 §2.5 注记) | | ~~U8~~ | ~~槽表条目格式~~ | **已定案**:{addr:u32, 预留:u32} 8B/条(引用表,地址指向值段) | diff --git a/Doc/isa/指令集清单.md b/Doc/isa/指令集清单.md index ec83195..3ce34b7 100644 --- a/Doc/isa/指令集清单.md +++ b/Doc/isa/指令集清单.md @@ -2,7 +2,7 @@ > 状态:**已编码**。全功能指令清单,全部指令已按 [`指令编码.md`](指令编码.md) 的 > RISC-V 式格式(前缀长度组 + op + func + fmt)分配编码。 -> 状态列:`核心` = v1 实现(含内建 FB 全部 14 条);`扩展` = v1 后实现;`预留` = 仅留编码/未来。 +> 状态列:`核心` = v1 实现(含内建 FB 全部 15 条);`扩展` = v1 后实现;`预留` = 仅留编码/未来。 ## 编码规则摘要(详见指令编码.md) diff --git a/Doc/isa/阶段1规格总览.md b/Doc/isa/阶段1规格总览.md index cab3ce2..f9fb069 100644 --- a/Doc/isa/阶段1规格总览.md +++ b/Doc/isa/阶段1规格总览.md @@ -51,7 +51,7 @@ - **TIME**:+ - 比较;**DATE/TOD/DT 不运算**(仅存取/比较) - **字段访问**:LOAD/STORE 16B 变体(基槽 + 偏移)= 结构体 + FB 共享体统一(LOADF 取消) - **I/Q/M 合并**:LOAD/STORE 两条;语义标签交 sidecar(绑定粒度 slot=槽号不变) -- **内建 FB**:14 条(CAL + fb_id16);字段布局终稿见指令集清单 §8.1(含 SR/RS、PWM、RTC);RTC 用**虚拟时钟**(周期×dt_ms,确定性) +- **内建 FB**:15 条(CAL + fb_id16);字段布局终稿见指令集清单 §8.1(含 SR/RS、PWM、RTC);RTC 用**虚拟时钟**(周期×dt_ms,确定性) ## 5. 映像格式(定案,详见指令集优化.md §2.5) @@ -76,7 +76,7 @@ [meta] # name="STATOR"、version=2 [[type]] # 19 条:name/width/signed/tag(func 值 0..18)/kind(int|uint|bit|float|time|date) [[op]] # 按前缀分区:prefix/op/func/fmt 互锁校验 -[[fb]] # 14 条:fb_id/name/字段列表(字段名+类型,布局规则 1/2/4/8 对齐) +[[fb]] # 15 条:fb_id/name/字段列表(字段名+类型,布局规则 1/2/4/8 对齐) ``` ## 7. 延后项(阶段 1 不处理)