2016-02-27 79 views
0

我学习汇编我发现这个指令我不明白这一点ADD指令 - 汇编的ARM Cortex-M0

ADD  R0, R0, R0, LSL #1 

我知道它乘以R0不过我还是要说的3项内容不明白它是如何工作的(我不知道LSL在这种情况下做了什么)。

谢谢你的时间

+3

操作数:目的地,SRC1,SRC2,可选的移位。操作R0 = R0 +(R0 << 1)LSL =逻辑左移 – BitBank

+1

移位的形式和操作数的语法是几乎第一件事任何像样的ARM组件参考盖。当然,除非给出的标题,你看完全特定的Cortex-M0的东西,因为不明白这个指令会(只支持Thumb指令的一小部分,不包括转移寄存器的形式)。 – Notlikethat

+0

@BB银行感谢您的解释 – Cypert

回答

4

LSL的意思是左移。

所以它的作用:

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

LSL是由桶形移位器执行的左移操作。 桶形移位器是在臂架构提供的硬件和它用于组合这些操作,以增加代码密度和执行速度。

例如在如果添加和移位(第一左移位和然后添加)是由两个指令执行那么它会降低代码密度(一个额外的指令),并且还对额外的指令来执行这种情况下。

在该指令中都操作在相同的周期中执行。