数据处理指令之: RSB减翻转指令

  • 2013/09/13

6.4  RSB减翻转指令

1.指令的编码格式

RSB(Reverse Subtract)减操作指令,从寄存器<shifter_operand>中减去<Rn>表示的数值,并将结果保存到目标寄存器<Rd>中,并根据指令的执行结果设置CPSR中相应的标志位。

指令的编码格式如图6.5所示。

图6.5  RSB指令的编码格式

2.指令的语法格式

RSB{<cond>}{S}  <Rn>,<Rn>,<shifter_operand>

① <cond>

为指令编码中的条件域。它指示指令在什么条件下执行。当<cond>忽略时,指令为无条件执行(cond=AL(Alway))。

② <S>

详见SUB指令。

③ <Rd>

指定目标寄存器。

④ <Rn>

指定第一个源操作数寄存器。

⑤ <shifter_operand>

使用ARM的通用寻址模式确定第二个源操作数。它影响指令编码格式中的I(bit[25])位和shifter_operand(bits[11∶0])位。

注意

当指令的编码格式中I位等于0,并且移位操作数shifter_operand中bit[7]和bit[4]也都等于1,则指令并非RSB指令。详情请参阅ARM系统结构参考手册。

3.指令操作的伪代码

指令操作的伪代码如下面程序段所示。

If  ConditionPassed{cond}  then

     Rd= shifter_operand-Rn

     If  S==1  and  Rd==r15  then

     CPSR=SPSR

     Else  if  S==1  then

          N flag=Rd[31]

          Z flag=if  Rd==0  then  1  else  0

          C flag=NOT BorrowFrom{shifter_operand - Rn}

          V flag=OverflowFrom{shifter_operand - Rn}

4.指令举例

【例6.4】RSB指令举例。

下面指令序列可以求一个64位数值的负数。64位数放在寄存器R0与R1中,其负数放在R2和R3中。其中R0与R2中放低32位值。

RSBS     R2,R0,#0;

RSC     R3,R1,#0;

人工客服
(售后/吐槽/合作/交友)

相关资讯

  1. 1.
  2. 2.
  3. 3.
  4. 4.
  5. 5.
  6. 6.
  7. 7.
  8. 8.
  9. 9.
  10. 10.
  11. 11.
  12. 12.
  13. 13.
  14. 14.
  15. 15.
  16. 16.
  17. 17.
  18. 18.
    W25QXX FLASH介绍

    11/22 07:27

  19. 19.
  20. 20.
查看全部20条内容