我使用的是 ARM 架构,我对 LDRB 的概念有点不清楚。LDRB 是带有可选 B 命令的 LDR,用于加载 32 位字的最低有效字节。三个问题。
如果您想要 32 位字的 MSB,则获取 32 位字的 MSB:
LDR R0, [R1]
LSR R0, #24
Run Code Online (Sandbox Code Playgroud)
其他任何东西都是令人困惑的,并且在不同字节序的系统之间完全不可移植 - 试图在 BE 系统上假设 LE 中断的情况下对字进行字节寻址。如果 BE-8 发现自己位于古老的 BE-32 系统上,那么它就会失效。
事实上,如果从加载字节[word ptr - #3]真的给你的最高位,而不是前一个单词的第二至少显著字节的话,我觉得你是一个BE-32系统*上-因此这不会对任何现代的正常工作。
* 或者可能是 BE-8 - 内存字节序与总线字节序以及字与字节寻址的诡计非常令人困惑,我不声称已经完全掌握了它。