ARM64指令中操作码对应的比特位是哪些?附stp指令实例
ARM64 STP指令编码解析:操作码字段定位
给定指令、二进制及十六进制编码:
指令:stp x29, x30, [sp, #-32] 二进制编码:10101001101111100111101111111101 十六进制编码:a9be7bfd
结合你已知的字段信息,以下是操作码字段的具体定位:
操作码核心字段(标识STP指令的比特位)
ARM64中,stp指令的操作码由多段固定/特征比特位组成,用于区分指令类型、操作模式、寻址方式:
- bit31-30:值为
10,既标识64位操作(使用X寄存器),也是操作码的组成部分 - bit29-28:值为
10,标识这是Store Pair指令(区别于Load Pair的01) - bit27-26:值为
10,标识采用Pre-indexed寻址(无写回,对应指令中的[sp, #-32]格式) - bit20-16:值为
11110,固定字段,用于区分Load/Store Pair类指令与其他指令
这些字段组合后,唯一确定了这是一条64位、Pre-indexed无写回的Store Pair指令,也就是stp指令。
字段对应验证
结合你的已知信息交叉验证:
- 寄存器字段(bit0-14):
- bit14-10:
11111→ 十进制31,对应基址寄存器sp - bit9-5:
11110→ 十进制30,对应寄存器x30 - bit4-0:
11101→ 十进制29,对应寄存器x29
- bit14-10:
- 立即数偏移相关位:
- bit21为
1(标识负偏移),结合bit25-19的1111110(十进制-2),偏移值为-2 << 4 = -32,完全匹配指令中的#-32
- bit21为
内容的提问来源于stack exchange,提问作者Virtual Wizard
相关产品推荐
相关产品推荐

