Как сдвинуть байты в сборке ARM - PullRequest
0 голосов
/ 11 ноября 2018

Скажем, у меня есть следующие шестнадцатеричные значения, хранящиеся в регистрах;

r1 = # 0x1

r2 = # 0x2

r3 = # 0x3

r4 = # 0xA

И я хочу сохранить # 0x123A в r0.

Существует ли способ сдвига значений байтов, аналогичный сдвигу битов в LSL / LSR, чтобы я мог И каждый регистр (r1-r4) с маской, а затем сдвигать байты в правильное положение в r0?

1 Ответ

0 голосов
/ 11 ноября 2018

ARM-сдвиги выполняются как часть второго операнда в других операциях. Так что вы бы сделали что-то вроде:

OR r0, r4, r3, LSL #4
OR r0, r0, r2, LSL #8
OR r0, r0, r1, LSL #12

хотя это не делает «маску», если другие биты ваших исходных регистров отличны от нуля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...