修正:内建 FB 实为 15 条(fb_id 0..14:TON..F_TRIG 11 + SR/RS/PWM/RTC 4),文档统一'14 条'→'15 条'
This commit is contained in:
+2
-2
@@ -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 |
|
||||
|---|---|---|---|
|
||||
|
||||
+5
-5
@@ -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) |
|
||||
|
||||
+2
-2
@@ -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/条(引用表,地址指向值段) |
|
||||
|
||||
+1
-1
@@ -2,7 +2,7 @@
|
||||
|
||||
> 状态:**已编码**。全功能指令清单,全部指令已按 [`指令编码.md`](指令编码.md) 的
|
||||
> RISC-V 式格式(前缀长度组 + op + func + fmt)分配编码。
|
||||
> 状态列:`核心` = v1 实现(含内建 FB 全部 14 条);`扩展` = v1 后实现;`预留` = 仅留编码/未来。
|
||||
> 状态列:`核心` = v1 实现(含内建 FB 全部 15 条);`扩展` = v1 后实现;`预留` = 仅留编码/未来。
|
||||
|
||||
## 编码规则摘要(详见指令编码.md)
|
||||
|
||||
|
||||
+2
-2
@@ -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 不处理)
|
||||
|
||||
Reference in New Issue
Block a user