2016-02-27 3 views
0

Я изучаю ассемблер, и я нашел эту инструкциюя не понимаю эту команды ADD - Assembler ARM Cortex-M0

ADD  R0, R0, R0, LSL #1 

Я знаю, что он умножает на 3 содержание R0, но я не Не понимаю, как это работает (я не знаю, что делает LSL в этом случае).

Спасибо за ваше время

+3

операнды: Dest, Src1, Src2, дополнительный сдвиг. Операция R0 = R0 + (R0 << 1) LSL = Логический сдвиг влево – BitBank

+1

Формы и синтаксис операндов - это в первую очередь первое, что касается каких-либо достойных ссылок на сборку ARM. Если конечно, учитывая название, вы смотрите на что-то совершенно специфическое для Cortex-M0, так как это тоже не понимает эту инструкцию (она поддерживает только небольшое подмножество команд Thumb, не включая сдвинутые регистровые формы). – Notlikethat

+0

@BitBank Спасибо за ваше объяснение – Cypert

ответ

4

LSL означает коробка передач влево.

Так он делает:

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

LSL является левой операцией сдвига, который осуществляется сдвиговым. Barrel shifter - это аппаратное обеспечение, предоставляемое в арматурной архитектуре, и используется для объединения такой операции для увеличения плотности кода и скорости выполнения.

Например, в этом случае, если сложение и сдвиг (первый сдвиг влево и затем сложение) выполняются двумя инструкциями, это уменьшит плотность кода (одну дополнительную инструкцию), а также дополнительную инструкцию для выполнения.

В этой инструкции обе операции выполняются в одном цикле.

Смежные вопросы