跳转至

立即数、后缀与操作数合法性

本页列出 c220 公共汇编形式中全部 46 个已识别立即数字段,覆盖 39 个指令 ID。 每个上下边界均已分别汇编,且 minimum-1maximum+1 均被后端拒绝;范围不是从字段宽度猜测。

完整立即数表

指令/字段 范围 位宽/扩展 缩放/对齐 运行解释
LD_XD_XN / address_mode 0..1 1 位;零扩展/枚举 scale=1;alignment=1 可选地址/控制模式
ST_XD_XN / address_mode 0..1 1 位;零扩展/枚举 scale=1;alignment=1 可选地址/控制模式
LD_DDR / address_mode 0..1 1 位;零扩展/枚举 scale=1;alignment=1 可选地址/控制模式
ST_DDR / address_mode 0..1 1 位;零扩展/枚举 scale=1;alignment=1 可选地址/控制模式
INSERT_XD_XN / bit_offset 0..63 6 位;零扩展/枚举 scale=1;alignment=1 目标位域最低位
INSERT_XD_XN / width_minus_one 0..31 5 位;零扩展/枚举 scale=1;alignment=1 插入宽度减一;bit_offset + width_minus_one 不得超过 63
INSERT_XD / immediate8 0..255 8 位;零扩展/枚举 scale=1;alignment=1 插入目标寄存器的 8 位值
INSERT_XD / bit_offset 0..63 6 位;零扩展/枚举 scale=1;alignment=1 目标位域最低位
INSERT_XD / extension_mode 0..1 1 位;零扩展/枚举 scale=1;alignment=1 8 位插入的扩展/控制模式
LD_XD_XN_IMM / offset -2048..2047 12 位;符号扩展 scale=1;alignment=1 字面字段值
LD_XD_XN_IMM / address_mode 0..1 1 位;零扩展/枚举 scale=1;alignment=1 可选地址/控制模式
ST_XD_XN_IMM / offset -2048..2047 12 位;符号扩展 scale=1;alignment=1 字面字段值
ST_XD_XN_IMM / address_mode 0..1 1 位;零扩展/枚举 scale=1;alignment=1 可选地址/控制模式
MOV_XD_IMM / immediate 0..65535 16 位;零扩展/枚举 scale=1;alignment=1 字面字段值
MOVK / immediate 0..65535 16 位;零扩展/枚举 scale=1;alignment=1 字面字段值
MOVK / halfword_position 0..3 2 位;零扩展/枚举 scale=16;alignment=16 选择目标位 [16n+15:16n]
ADD_IMM / immediate 0..4095 12 位;零扩展/枚举 scale=1;alignment=1 字面字段值
MUL_IMM / immediate -2048..2047 12 位;符号扩展 scale=1;alignment=1 字面字段值
SUB_IMM / immediate 0..4095 12 位;零扩展/枚举 scale=1;alignment=1 字面字段值
DC_PRELOAD_XN_IMM / offset -2048..2047 12 位;符号扩展 scale=1;alignment=1 相对地址寄存器的有符号字节偏移
CMP_IMM / immediate -2048..2047 12 位;符号扩展 scale=1;alignment=1 字面字段值
LDP_XI_XJ_XN / offset -32..31 6 位;符号扩展 scale=1;alignment=1 成对访问的有符号偏移
STP_XI_XJ_XN / offset -32..31 6 位;符号扩展 scale=1;alignment=1 成对访问的有符号偏移
ST_ATOMIC_XD_XN_XM / atomic_mode 0..1 1 位;零扩展/枚举 scale=1;alignment=1 原子存储控制模式
ST_ATOMIC_XD_XN_IMM12 / offset -2048..2047 12 位;符号扩展 scale=1;alignment=1 有符号字节偏移
ST_ATOMIC_XD_XN_IMM12 / atomic_mode 0..1 1 位;零扩展/枚举 scale=1;alignment=1 原子存储控制模式
ST_DEV_XD_XN_IMM12 / offset -2048..2047 12 位;符号扩展 scale=1;alignment=1 字面字段值
LD_DEV_XD_XN_IMM12 / offset -2048..2047 12 位;符号扩展 scale=1;alignment=1 字面字段值
MOVX8_XD_IMM / immediate 0..65535 16 位;零扩展/枚举 scale=1;alignment=1 字面字段值
JUMP / pc_displacement -32768..32767 16 位;符号扩展 scale=4;alignment=4 有符号指令字位移;标签字节位移除以 4 后重定位
JUMPC / pc_displacement -32768..32767 16 位;符号扩展 scale=4;alignment=4 有符号指令字位移;标签字节位移除以 4 后重定位
DCCI / mode 0..1 1 位;零扩展/枚举 scale=1;alignment=1 缓存维护操作模式
CALL / pc_displacement -32768..32767 16 位;符号扩展 scale=4;alignment=4 有符号指令字位移;标签字节位移除以 4 后重定位
LOOP / pc_displacement 0..255 8 位;零扩展/枚举 scale=4;alignment=4 无符号指令字位移;标签按 4 字节对齐
SET_FLAG / event 0..7 3 位;零扩展/枚举 scale=1;alignment=1 字面字段值
WAIT_FLAG / event 0..7 3 位;零扩展/枚举 scale=1;alignment=1 字面字段值
ADRP / page_displacement -32768..32767 16 位;符号扩展 scale=4096;alignment=4096 PC 低 12 位清零后加有符号页位移
DSB / mode 0..3 2 位;零扩展/枚举 scale=1;alignment=1 字面字段值
JUMPCMP / pc_displacement -16..15 5 位;符号扩展 scale=4;alignment=4 公共字面量形式中的有符号指令字位移
WAIT_FLAG_DEVI / event 0..255 8 位;零扩展/枚举 scale=1;alignment=1 字面字段值
VCADD / reduce_mode 0..1 1 位;零扩展/枚举 scale=1;alignment=1 归约/控制模式
VCMAX / reduce_mode 0..3 2 位;零扩展/枚举 scale=1;alignment=1 归约/控制模式
VCMIN / reduce_mode 0..3 2 位;零扩展/枚举 scale=1;alignment=1 归约/控制模式
VADDRELUCONV / conversion_mode 0..1 1 位;零扩展/枚举 scale=1;alignment=1 融合转换/控制模式
VSUBRELUCONV / conversion_mode 0..1 1 位;零扩展/枚举 scale=1;alignment=1 融合转换/控制模式
VSHR / shift_mode 0..1 1 位;零扩展/枚举 scale=1;alignment=1 移位/控制模式

scale 是字段单位到运行量的倍率;alignment 是标签或地址的最低对齐要求。 地址模式、归约模式等枚举已经固定可写范围,但数值 0/½/3 的公共符号名未暴露时,文档不会擅自命名。

越界值不会可靠地自动截断。负数 MOV 和部分大常量还会进入后端错误路径;源码必须使用表内值。

后缀矩阵

后缀是助记符的一部分,顺序不能交换。常见层次为:

OP.<dtype>
CMP.<cond>.<dtype>
VCONV.<src2dst><round>
SYNC.<src-pipe>.<dst-pipe>

同一 dtype 在不同指令上不自动合法。逐指令页列出了汇编器实际接受的每个“CPU + 后缀 + 操作数形状 + 完整文本 + 机器字”组合;表外组合必须重新验证。

表中的 alignment 描述该立即数字段或标签的编码粒度,不等于有效地址的运行时数据对齐。例如 LD.b64 X0, [X1], #1 可以编码,但执行时仍会按 8 字节访问宽度检查最终地址。完整规则见地址与数据对齐