Assembly 如何在ARM组件中使用位移位在寄存器之间进行复制?

Assembly 如何在ARM组件中使用位移位在寄存器之间进行复制?,assembly,arm,Assembly,Arm,我无法同时找出bitshift和ldr的正确语法…以下是我一直在尝试的内容 ldr r4, r1, lsr #1 我想把r1除以2,然后以一个快速的运动将它存储在r4中。然而,gcc在指令后面说垃圾。mov是用于将一个寄存器移动到另一个寄存器的合适指令,而不是ldr ARM模式下的语法为: mov r4, r1, lsr#1 在拇指模式下,您可以执行以下操作(如果正在使用,也可以在手臂模式下工作): ARM是一种具有单个ld/st单元的加载/存储体系结构。除了地址的自动inc/dec,您不能

我无法同时找出bitshift和ldr的正确语法…以下是我一直在尝试的内容

ldr r4, r1, lsr #1

我想把r1除以2,然后以一个快速的运动将它存储在r4中。然而,gcc在指令后面说垃圾。

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

ARM模式下的语法为:

mov r4, r1, lsr#1
在拇指模式下,您可以执行以下操作(如果正在使用,也可以在手臂模式下工作):


ARM是一种具有单个ld/st单元的加载/存储体系结构。除了地址的自动inc/dec,您不能将任何其他操作与加载/存储配对。VLIW计算机(如Movidius)具有多个加载/存储单元,可以将一系列操作打包到一条指令中。ARM的桶形移位器是ALU的一部分,因此可以在数学/逻辑运算期间使用。因此,这里的关键点是使用mov而不是ldr。ldr用于从数据总线读入寄存器,str用于从寄存器存储到地址。mov、add、xor等用于在修改或不修改值的情况下从一个寄存器移动到另一个寄存器。所有这些都在arm文档中,只需查看
lsr r4, r1, #1