【发布时间】:2018-11-11 16:58:58
【问题描述】:
假设我在寄存器中存储了以下十六进制值;
r1 = #0x1
r2 = #0x2
r3 = #0x3
r4 = #0xA
我想将 #0x123A 存储在 r0 中。
有没有一种方法可以移动字节值,类似于使用 LSL/LSR 移动位,以便我可以将每个寄存器 (r1-r4) 与掩码进行 AND,然后将字节移动到 r0 中的正确位置?
【问题讨论】:
假设我在寄存器中存储了以下十六进制值;
r1 = #0x1
r2 = #0x2
r3 = #0x3
r4 = #0xA
我想将 #0x123A 存储在 r0 中。
有没有一种方法可以移动字节值,类似于使用 LSL/LSR 移动位,以便我可以将每个寄存器 (r1-r4) 与掩码进行 AND,然后将字节移动到 r0 中的正确位置?
【问题讨论】:
ARM 移位是在其他操作中作为第二个操作数的一部分完成的。所以你会做这样的事情:
OR r0, r4, r3, LSL #4
OR r0, r0, r2, LSL #8
OR r0, r0, r1, LSL #12
虽然如果源寄存器的其他位不为零,这不会执行“掩码”部分。
【讨论】: