如何使用 ARM 汇编将值从寄存器存储到绝对地址?

How do I store value from a register to absolute Address using ARM Assembly?

我想使用 ARM 汇编将寄存器值存储到地址。我正在寻找这样的东西,

STR R0, =0x20000000            // store r0 to 0x20000000

但这当然是一个错误。

一种方法如下,

LDR R1, =0x20000000
STR R0, [R1 + #0]

但是如上所述,我只想使用一个寄存器来完成。那有什么办法吗?

But I want to do it using only one register, as mentioned above.

没有可用的指令可以让您这样做,所有存储指令都需要至少一个用于目标地址的寄存器。

原因很简单:尽管有 32 位指令,但这些指令中没有足够的位来编码完整的 32 位地址,因为您总是需要更多的操作码位。

出于同样的原因,加载和存储指令中的可选偏移量受到限制。