刘帅嵌入式系统-数据处理指令操作数寻址方式之循环右移寻址

在介绍循环右移寻址之前,需要先聊一下扩展循环右移寻址RRX,因为后面有用的到的地方。

扩展的循环右移寻址:<Rm>, RRX

指令编码格式:

指令操作数<shifter_operand>为寄存器Rm的数值右移一位,并用CPSR中的C位标志填补空出的位。CPSR中的C位标志被移出的位代替。

注:当R15用作第一个源操作数或第二个操作数Rm时,操作数即为当前指令地址加8。

循环右移寻址:<Rm>,ROR #<shift_imm>

指令编码格式:

指令操作数<shifter_operand>为寄存器Rm循环右移shift_imm位。shift_imm位5位,范围0~31位。在进行移位操作时,从寄存器中移出的位,又插入到寄存器左端空出的位。

当shift_imm = 0时,将执行上文中介绍的RRX寻址操作。

当shift_imm != 0时,操作数<shifter_operand>为寄存器Rm的数值循环右移shift_imm位,循环器的进位值为最后被移除的位。

注:当R15用作第一个源操作数或第二个操作数Rm时,操作数即为当前指令地址加8。

猜你喜欢

转载自blog.csdn.net/shuai532209720/article/details/88560871