【问题标题】:How to shift bytes in ARM assembly如何在 ARM 汇编中移动字节
【发布时间】:2018-11-11 16:58:58
【问题描述】:

假设我在寄存器中存储了以下十六进制值;

r1 = #0x1

r2 = #0x2

r3 = #0x3

r4 = #0xA

我想将 #0x123A 存储在 r0 中。

有没有一种方法可以移动字节值,类似于使用 LSL/LSR 移动位,以便我可以将每个寄存器 (r1-r4) 与掩码进行 AND,然后将字节移动到 r0 中的正确位置?

【问题讨论】:

    标签: assembly arm


    【解决方案1】:

    ARM 移位是在其他操作中作为第二个操作数的一部分完成的。所以你会做这样的事情:

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

    虽然如果源寄存器的其他位不为零,这不会执行“掩码”部分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-20
      • 1970-01-01
      • 2013-11-24
      相关资源
      最近更新 更多