32 位编码与位域阅读¶
每条指令页都提供两种互补表示:
0/1是该解码项必须满足的精确固定位。.是可变位;分段标签说明该格式中通常承载的操作数角色。match_mask/match_value是精确识别条件。- 若固定掩码穿过某个逻辑字段,该字段会拆成“固定子段 + 可变子段”。
固定位是逐指令精确值;没有公共文本形式的专用项,其可变 payload 只保证格式级角色,不能据此生成未验证机器码。
对具有公共文本形式的条目,还对每个 X 操作数分别使用 X0/X1/X2/X4/X8/X16/X31 做差分编码。当前固定了 117 个指令 ID 的 329 个 X 操作数映射,所有映射均通过 X31 组合一致性检查。生成完整分段时,这些差分结果会覆盖格式类的通用标签;两者发生冲突时,以逐操作数差分得到的机器位为准。逐指令页中的“X 寄存器操作数位域”给出输入寄存器编号位到机器字位的一一对应关系。
顶层分类¶
| word[31:29] | 域 |
|---|---|
000 |
Scalar |
010 |
Flow/同步 |
011 |
MTE |
100 |
Vector |
110 |
Fixpipe |
111 |
Cube |
常见寄存器槽¶
| 位 | 常见角色 |
|---|---|
| 21:17 | Xd/目标地址 |
| 16:12 | Xn/源 0/基址 |
| 11:7 | Xm/源 1/MTE 描述寄存器 |
| 6:2 | Vector/Cube 的 Xs |
Scalar 的部分格式会借用低控制位作为寄存器编号高位,因此不能把所有标量格式机械限制为相同 5 位编号。公共文本接口仍只使用 X0–X31;生成超出公共 ABI 的编号没有可移植意义。