Assembly 我不知道';我不理解这个ADD指令-汇编程序ARM Cortex-M0

Assembly 我不知道';我不理解这个ADD指令-汇编程序ARM Cortex-M0,assembly,arm,add,cortex-m,Assembly,Arm,Add,Cortex M,我在学习汇编程序,我找到了这个指令 ADD R0, R0, R0, LSL #1 我知道它将R0的内容乘以3,但我不知道它是如何工作的(我不知道LSL在这种情况下做了什么) 感谢您抽出时间LSL意味着左移 它确实: R0 = R0 + (R0 << 1) = R0 + R0 * 2 R0=R0+(R0LSL表示左移 它确实: R0 = R0 + (R0 << 1) = R0 + R0 * 2 R0=R0+(R0LSL是由桶形换档器执行的左换档操作。 桶形移位

我在学习汇编程序,我找到了这个指令

ADD     R0, R0, R0, LSL #1
我知道它将R0的内容乘以3,但我不知道它是如何工作的(我不知道LSL在这种情况下做了什么)

感谢您抽出时间

LSL意味着左移

它确实:

R0 = R0 + (R0 << 1) = R0 + R0 * 2
R0=R0+(R0LSL表示左移

它确实:

R0 = R0 + (R0 << 1) = R0 + R0 * 2

R0=R0+(R0LSL是由桶形换档器执行的左换档操作。
桶形移位器是arm体系结构中提供的一种硬件,用于组合此类操作以提高代码密度和执行速度

例如,在这种情况下,如果加法和移位(先左移位,然后加法)由两条指令执行,那么它将降低代码密度(一条额外的指令),也将减少要执行的额外指令


在本指令中,两个操作在同一个周期内执行。

LSL是由桶式换档器执行的左换档操作。 桶形移位器是arm体系结构中提供的一种硬件,用于组合此类操作以提高代码密度和执行速度

例如,在这种情况下,如果加法和移位(先左移位,然后加法)由两条指令执行,那么它将降低代码密度(一条额外的指令),也将减少要执行的额外指令


在此指令中,两个操作在同一个周期内执行。

操作数:Dest、Src1、Src2、可选移位。操作为R0=R0+(R0操作数的形式和语法几乎是任何体面的ARM汇编参考所涵盖的第一件事。当然,除非给出标题,否则您看到的是完全特定于Cortex-M0的东西,因为Cortex-M0也不理解此指令(它只支持一小部分Thumb指令,不包括移位寄存器形式)。@BitBank感谢您的解释操作:Dest,Src1,Src2,可选移位。操作为R0=R0+(R0操作数的形式和语法几乎是任何体面的ARM汇编参考所涵盖的第一件事。当然,除非给出标题,否则您看到的是完全特定于Cortex-M0的东西,因为Cortex-M0也不理解此指令(它只支持一小部分Thumb指令,不包括移位寄存器形式)。@BitBank感谢您的解释