2016-02-27 105 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是由桶形移位器執行的左移操作。 桶形移位器是在臂架構提供的硬件和它用於組合這些操作,以增加代碼密度和執行速度。

例如在如果添加和移位(第一左移位和然後添加)是由兩個指令執行那麼它會降低代碼密度(一個額外的指令),並且還對額外的指令來執行這種情況下。

在該指令中都操作在相同的週期中執行。