【问题标题】:What does this RSB instruction do?这个 RSB 指令有什么作用?
【发布时间】:2017-02-04 16:41:42
【问题描述】:

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

RSB r1, r2, r3, LSL #1

我指的是来自 keil 页面的 RSB 描述,但此示例不太适合:http://www.keil.com/support/man/docs/armasm/armasm_dom1361289891932.htm 我将不胜感激。

【问题讨论】:

  • 哪部分有问题?
  • 我无法匹配这个例子,因为它有很多参数

标签: assembly arm


【解决方案1】:

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 #1r3 的内容左移一位,减去r2 并将结果存储在r1 中而不设置标志。在伪代码中,它是这样做的:

    r1 = r3 + r3 - r2
    

    注意第三个操作数是一个灵活操作数,包含r3, LSL #1。详情请见this page

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-11-13
      • 1970-01-01
      • 1970-01-01
      • 2015-05-15
      • 2016-02-27
      • 2014-04-28
      相关资源
      最近更新 更多