这个RSB指令有什么作用?

问题描述 投票:0回答:2

我想弄清楚这条 ARM 装配线是做什么的:

RSB r1, r2, r3, LSL #1

我指的是 Keil 帮助页面的 RSB 描述,但这个例子不太合适。

我将不胜感激所有帮助。

assembly arm
2个回答
11
投票

RSB 指令是不带进位的反向减法。
文档指示语法:

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

可以解释以下用法:

RSB r1, r2, r3, LSL #1  
  1. r3, LSL #1
    是 Operand2 → r3 寄存器逻辑左移 1 位
  2. r2 是 Rn
  3. r1 是 Rd

所以操作使用r1、r2和r3寄存器如下:

r1 = (r3 << 1) - r2


2
投票

指令

RSB r1, r2, r3, LSL #1
r3
的内容左移一位,减去
r2
并将结果存储在
r1
中,而不设置标志。在伪代码中,它执行以下操作:

r1 = r3 + r3 - r2

请注意,第三个操作数是由 r3, LSL #1 组成的

灵活操作数
。请参阅此页了解更多详情。

© www.soinside.com 2019 - 2024. All rights reserved.