ASR(寄存器)
算术右移(寄存器)。
这个指令是ASRV的别名。
等效指令为ASRV Wd, Wn, Wm
。
语法
ASR Wd, Wn, Wm ;32位
ASR Xd, Xn, Xm ;64位
注释
Wd
32位目标通用寄存器。
Wn
32位第一个源通用寄存器。
Wm
32位第二个源通用寄存器,它的低5位保存着0~31的移位量。
Xd
64位目标通用寄存器。
Xn
64位第一个源通用寄存器。
Xm
64位第二个源通用寄存器,它的低6位保存着0~63的移位量。
运算
算术右移指令,将一个寄存器的值右移一个可变位数,高位用符号位填充,并将结果写入目标寄存器。第二个源寄存器除以数据大小(即64或者32)得到的余数定义了第一个源寄存器右移的位数。
1 | Rd = ASR(Rn, Rm) ;R代表 W 或者 X |
ASR(立即数)
算术右移(立即数)。
这条指令是SBFM的别称。
这条指令的等价指令是SBFM Wd, Wn, #shift, #31
。
语法
ASR Wd, Wn, #shift ;32位
ASR Xd, Xn, #shift ;64位
注释
Wd
32位目标通用寄存器。
Wn
32位源通用寄存器。
shift
取决于指令
- 32位通用寄存器
移位量,范围为0~31。
- 64位通用寄存器
移位量,范围为0~63。
Xd
64位目标通用寄存器。
Xn
64位源通用寄存器。
运算
算术右移指令(立即数),将一个寄存器的值右移立即数的值的位数,高位用符号位填充,并将结果写入目标寄存器。
1 | Rd = ASR(Rn, shift) ;R代表 W 或者 X。 |