这个RSB指令做了什么?

时间:2017-02-04 16:41:42

标签: assembly arm

我正在试图弄清楚这个ARM装配线的作用:

RSB r1, r2, r3, LSL #1

我指的是keil页面中的RSB描述,但这个例子并不合适:http://www.keil.com/support/man/docs/armasm/armasm_dom1361289891932.htm 我将非常感谢你的帮助。

2 个答案:

答案 0 :(得分:2)

RSB指令是不带进位的反向吸收 文档说明了语法:

RSB{S}{cond} {Rd}, Rn, Operand2

然后可以解释以下用法:

RSB r1, r2, r3, LSL #1  
  1. r3, LSL #1是操作数2→r3寄存器逻辑左移1位
  2. r2是Rn
  3. r1是Rd
  4. 因此该操作使用r1,r2和r3寄存器,如下所示:r1 = (r3 << 1) - r2

答案 1 :(得分:1)

指令RSB r1, r2, r3, LSL #1r3的内容移到一个地方,减去r2并将结果存储在r1中,而不设置标记。在伪代码中,它是这样做的:

r1 = r3 + r3 - r2

请注意,第三个操作数是包含r3, LSL #1灵活操作数。有关详细信息,请参阅this page