跳转至

32 位编码与位域阅读

每条指令页都提供两种互补表示:

00000000....................0001
[31:24]=00000000(fixed); [23:22]=dtype; ...; [3:0]=0001(fixed)
  • 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 位编号。公共文本接口仍只使用 X0X31;生成超出公共 ABI 的编号没有可移植意义。

下载数据