我学习汇编我发现这个指令我不明白这一点ADD指令 - 汇编的ARM Cortex-M0
ADD R0, R0, R0, LSL #1
我知道它乘以R0不过我还是要说的3项内容不明白它是如何工作的(我不知道LSL在这种情况下做了什么)。
谢谢你的时间
我学习汇编我发现这个指令我不明白这一点ADD指令 - 汇编的ARM Cortex-M0
ADD R0, R0, R0, LSL #1
我知道它乘以R0不过我还是要说的3项内容不明白它是如何工作的(我不知道LSL在这种情况下做了什么)。
谢谢你的时间
LSL的意思是左移。
所以它的作用:
R0 = R0 + (R0 << 1) = R0 + R0 * 2
LSL是由桶形移位器执行的左移操作。 桶形移位器是在臂架构提供的硬件和它用于组合这些操作,以增加代码密度和执行速度。
例如在如果添加和移位(第一左移位和然后添加)是由两个指令执行那么它会降低代码密度(一个额外的指令),并且还对额外的指令来执行这种情况下。
在该指令中都操作在相同的周期中执行。
操作数:目的地,SRC1,SRC2,可选的移位。操作R0 = R0 +(R0 << 1)LSL =逻辑左移 – BitBank
移位的形式和操作数的语法是几乎第一件事任何像样的ARM组件参考盖。当然,除非给出的标题,你看完全特定的Cortex-M0的东西,因为不明白这个指令会(只支持Thumb指令的一小部分,不包括转移寄存器的形式)。 – Notlikethat
@BB银行感谢您的解释 – Cypert