Chinaunix首页 | 论坛 | 博客
  • 博客访问: 994282
  • 博文数量: 21
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 216
  • 用 户 组: 普通用户
  • 注册时间: 2018-11-27 17:55
文章分类
文章存档

2019年(21)

我的朋友

分类: C/C++

2019-06-29 22:09:38


点击(此处)折叠或打开

  1. int con(int x , int y)
  2. {
  3.         int result;
  4.         if(x < y)
  5.                 result = y -x;
  6.         else
  7.                 result = x - y;

  8.         return result;
  9. }

点击(此处)折叠或打开

  1. con:
  2.     @ Function supports interworking.
  3.     @ args = 0, pretend = 0, frame = 0
  4.     @ frame_needed = 0, uses_anonymous_args = 0
  5.     @ link register save eliminated.
  6.     cmp    r0, r1
  7.     rsblt    r0, r0, r1   @如果r0
  8.     rsbge    r0, r1, r0   @如果r0>=r1, 则r0=r0-r1,rsbge是rsb和ge的组合
  9.     bx    lr

CMP{条件}{P} ,
                status = op_1 - op_2
CMP 允许把一个寄存器的内容如另一个寄存器的内容或立即值进行比较,更改状态标志来允许进行条件执行。它进行一次减法,但不存储结果,而是正确的更改标志。标志表示的是操作数 1 比操作数 2 如何(大小等)。如果操作数 1 大于操作操作数 2,则此后的有 GT 后缀的指令将可以执行。

RSB : 反向减法

(Reverse Subtraction)

  RSB{条件}{S}  , , 

                dest = op_2 - op_1
SUB 用操作数 two 减去操作数 one,把结果放置到目的寄存器中。操作数 1 是一个寄存器,操作数 2 可以是一个寄存器,被移位的寄存器,或一个立即值:
  RSB     R0, R1, R2              ; R0 = R2 - R1
  RSB     R0, R1, #256            ; R0 = 256 - R1
  RSB     R0, R2, R3,LSL#1        ; R0 = (R3 << 1) - R2
反向减法可以在有符号或无符号数上进行。 


阅读(2307) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~