gpt4 book ai didi

assembly - ARM ASM 中的 LDRB - 一般问题

转载 作者:行者123 更新时间:2023-12-02 04:38:39 25 4
gpt4 key购买 nike

我使用的是 ARM 架构,我对 LDRB 的概念有点不清楚。 LDRB 是带有可选 B 命令的 LDR,用于加载 32 位字的最低有效字节。三个问题。

  1. 我真正想要的是前 8 位,而不是后 8 位(我正在遍历数组)。有没有一种优雅的方法可以做到这一点?我找不到它的命令。
  2. 我现在正在做的是 SUB r4, r4, #3 将 r4(我要加载的指针)向后移动三个字节,这样最低有效字节现在就位于 32 位的前面单词。如果我所做的只是向前迭代,这是否会导致内存问题?
  3. 我正在使用 LDRB r7、r4;这应该将最低有效字节从 r4 加载到 r7。通过零扩展,这意味着结果将类似于 00...00010101 或 10101000...00?

最佳答案

如果你想要一个 32 位字的 MSB,那么得到一个 32 位字的 MSB:

LDR R0, [R1]
LSR R0, #24

任何其他东西都是令人困惑的,并且在不同字节顺序的系统之间完全不可移植 - 假设 LE 在 BE 系统上中断,试图字节寻址字。如果 BE-8 发现自己在一个古老的 BE-32 系统上,它的工作就会中断。

事实上,如果从 [word ptr - #3] 加载一个字节真的给你 MSB 而不是前一个单词的第二个最低有效字节那么我认为你 在 BE-32 系统上* - 因此这在任何现代系统上都无法正常工作。

* 或者可能是 BE-8 - 内存字节序与总线字节序以及字与字节寻址的技巧非常困惑,我没有声称已经完全掌握了它。

关于assembly - ARM ASM 中的 LDRB - 一般问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21362625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com