我正在试图弄清楚这个ARM装配线的作用:
RSB r1, r2, r3, LSL #1
我指的是keil页面中的RSB描述,但这个例子并不合适:http://www.keil.com/support/man/docs/armasm/armasm_dom1361289891932.htm 我将非常感谢你的帮助。
答案 0 :(得分:2)
RSB指令是不带进位的反向吸收 文档说明了语法:
RSB{S}{cond} {Rd}, Rn, Operand2
然后可以解释以下用法:
RSB r1, r2, r3, LSL #1
r3, LSL #1
是操作数2→r3寄存器逻辑左移1位因此该操作使用r1,r2和r3寄存器,如下所示:r1 = (r3 << 1) - r2
答案 1 :(得分:1)
指令RSB r1, r2, r3, LSL #1
将r3
的内容移到一个地方,减去r2
并将结果存储在r1
中,而不设置标记。在伪代码中,它是这样做的:
r1 = r3 + r3 - r2
请注意,第三个操作数是包含r3, LSL #1
的灵活操作数。有关详细信息,请参阅this page。