如何在 ARM 汇编中使用位移位在寄存器之间进行复制?

How to copy between registers with a bitshift in ARM assembly?

我无法同时找到 bitshift 和 ldr 的正确语法...这就是我一直在尝试的方法,

ldr r4, r1, lsr #1

我想将 r1 除以二,并在一个 swift 动作中将其存储在 r4 中。然而 gcc 正在按照指令说垃圾。

mov 是用于将一个寄存器移动到另一个寄存器的适当指令,而不是 ldr.

ARM 模式下的语法为:

mov r4, r1, lsr#1

在 Thumb 模式下你可以这样做(如果你使用 unified syntax 也可以在 ARM 模式下工作):

lsr r4, r1, #1