指令集优化:U7 定案——头 128B 修正版(offset_meta 占位、values_size 命名、n_i/n_q/n_m 保留恒 0、n_slots 关系、16 对齐)
This commit is contained in:
+19
-9
@@ -103,20 +103,29 @@
|
||||
- **ST 层**:19 类型名全量进关键字;**进制前缀** `2#`/`8#`/`16#` 支持(浮点无前缀);浮点十进制字面量(`1.5`、`-2.5e3`)
|
||||
- **类型转换**:**禁止隐式变量转换**(赋值/比较/算术要求类型严格一致,Typecheck 阶段报错);**字面量按上下文适配**(`5` 可赋 INT/REAL/DINT 等,编译期解释,非运行时转换);显式转换函数(`INT_TO_REAL()`)v1 不做
|
||||
|
||||
### 2.5 映像格式(头 128 字节,16 对齐)
|
||||
### 2.5 映像格式(头 128 字节,16 对齐)——U7 已定案
|
||||
|
||||
```text
|
||||
0..71 原 15 字段(magic/版本/cycle_limit/dt_ms/hash/entry/n_globals/n_i/n_q/n_m/
|
||||
n_consts/n_funcs + offset_const/funcs/code)
|
||||
0..71 原 17 字段(72 字节:magic/版本/cycle_limit/dt_ms/project_hash/entry_fn_id/
|
||||
n_globals/n_i/n_q/n_m/n_consts/n_funcs + offset_const/funcs/code/fb/data)
|
||||
64 offset_slots ← 槽表段(原 offset_fb 改义,FB 并入值区)
|
||||
68 offset_values ← 值段(原 offset_data 改义)
|
||||
68 offset_values ← 值段(原 offset_data 改义,起点 16 对齐)
|
||||
72..103 型号标识(STATOR2)
|
||||
104 n_slots ← 新增
|
||||
108 n_values ← 新增(值段字节数)
|
||||
112..127 预留
|
||||
104 n_slots ← 槽表条目数(= n_globals + FB 实例/结构体字段槽数)
|
||||
108 values_size ← 值段字节数(原 n_values,命名修正)
|
||||
112 offset_meta ← 元数据段偏移(v1 恒 0 = 空段;结构体/字符串类型表预留)
|
||||
116..127 预留 12 字节
|
||||
```
|
||||
|
||||
段序:头 → 常量表 → 函数表 → 字节码 → 槽表段 → 值段 → 元数据段(预留) → SHA-256 尾
|
||||
段序:头 → 常量表 → 函数表 → 字节码 → 槽表段 → 值段 → 元数据段(v1 空) → SHA-256 尾
|
||||
|
||||
**U7 修正注记(2026-08-24)**:
|
||||
- 「原 15 字段」修正为**原 17 字段(72 字节)**
|
||||
- `n_values` 改名 **`values_size`**(值段字节数,避免与"数量"混淆)
|
||||
- 预留区固定 **`offset_meta` @112**(v1 填 0 = 元数据段不存在,将来启用不改头)
|
||||
- **n_i/n_q/n_m 保留恒 0**(V1 遗产字段:兼容 + sidecar 校验/将来 I/Q/M 分区语义预留,不删)
|
||||
- **n_slots = n_globals + FB 实例/结构体字段槽数**(明确关系)
|
||||
- **offset_values 16 对齐**(TIME/LREAL 8B 对齐的上界;编译器保证)
|
||||
|
||||
### 2.6 其他定案
|
||||
|
||||
@@ -252,6 +261,7 @@ V2 的 op 位段仅 6 位(64 个),FB 占 8 个不划算,且 machine.toml
|
||||
- A9 定案:按上下文适配、默认 DINT 兜底(用户确认)
|
||||
- U5 定案:内建 FB 14 条全部 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 对齐)
|
||||
- A10 定案(B1/B2):1 CAL + fb_id 16 位(查 [[fb]] 表);V1 的 8 个 CAL_* opcode 作废
|
||||
- B4 定案:领域指令(运动控制/通信)不进指令集,一律 FB 库;无 EXT 服务指令
|
||||
- B3/B5 说明中待确认:单/双字计数编码(CAL type 位段)、op 位段预算
|
||||
@@ -303,7 +313,7 @@ V2 的 op 位段仅 6 位(64 个),FB 占 8 个不划算,且 machine.toml
|
||||
| ~~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 实现** |
|
||||
| ~~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 字节布局**(64/68 改义、n_slots/n_values、型号@72、112..127 预留) | §2.5 已写 | 未细审,确认 / 改 |
|
||||
| ~~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** | §2.3 已写 | 确认 / 改 |
|
||||
| U9 | **值段对齐 1/2/4/8B 编译器保证** | §2.3 已写 | 确认 / 改 |
|
||||
| U10 | **寄存器值 int64(8B)不变 + 调用约定 r0..r7 不变** | §2.2 已写 | 确认 / 改 |
|
||||
|
||||
Reference in New Issue
Block a user