我想使用ARM汇编将寄存器值存储到一个地址。我在找像这样的东西,
STR R0, =0x20000000 // store r0 to 0x20000000
字符串但这当然是一个错误。一种方法如下,
LDR R1, =0x20000000 STR R0, [R1 + #0]
型但是我想只使用一个寄存器来做,就像上面提到的那样。有没有办法做到这一点?
rwqw0loc1#
但是我想只使用一个寄存器来做,就像上面提到的那样。没有任何指令可以让你这样做,所有的存储指令都需要至少一个寄存器来存储目的地址。原因很简单:尽管有32位指令,但这些指令中没有足够的位来编码完整的32位地址,因为您总是需要更多的位用于操作码。出于同样的原因,加载和存储指令中的可选偏移量也受到限制。
1条答案
按热度按时间rwqw0loc1#
但是我想只使用一个寄存器来做,就像上面提到的那样。
没有任何指令可以让你这样做,所有的存储指令都需要至少一个寄存器来存储目的地址。
原因很简单:尽管有32位指令,但这些指令中没有足够的位来编码完整的32位地址,因为您总是需要更多的位用于操作码。
出于同样的原因,加载和存储指令中的可选偏移量也受到限制。