【问题标题】:Is there a way to bit reverse a 32-bit binary integer in ARM Assembly language without using carry flags or RRX?有没有办法在不使用进位标志或 RRX 的情况下在 ARM 汇编语言中对 32 位二进制整数进行位反转?
【发布时间】:2019-11-27 17:54:48
【问题描述】:

在正常情况下,我们会在 32 位二进制数上使用 LSLS,#1 指令,其中 MSB 将保留在进位中,并使用 RRX 将其推回另一个寄存器以反转位,我们将这样做 32 次。

但是如果我们不允许专门 RRX 和任何进位位,是否有另一种方法来反转这些位?

【问题讨论】:

  • 当然。你能用C做吗?那也没有旋转或携带。提示:你可以在它进入进位之前遮住一点。
  • 如果你的 CPU 有一个足够新的微架构,它可能有 rbit 指令可以做到这一点。
  • rotate 不需要反转位顺便说一句,这只是一种简单的循环来解决问题的方法。
  • 但是如果我必须在没有 C 的情况下仅使用 ARM 汇编语言来做呢

标签: assembly arm cortex-m cortex-m3 cortex-a8


【解决方案1】:

您已经标记了 arm V7-m 架构的 cortex m3 和 Arm V7-a 架构的 cortex a8,它们都有 rbit 指令,它可以反转 32 位寄存器中的位。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-06
    • 1970-01-01
    • 2016-03-19
    • 1970-01-01
    • 2023-03-19
    • 2019-05-23
    • 2015-05-18
    相关资源
    最近更新 更多