【发布时间】: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