Was bedeutet die Raute (#) Wert zugeordnet ist, der ARM LDR Unterricht bedeuten?
Ich versuche zu Debuggen, die einen Absturz erlebe ich in meiner Anwendung. Der StackTrace zeigt auf ein LDR-Befehl mit dem folgenden format (Dank disassembler):
LDR R3, [R0,#4]
Meine Frage ist in Bezug auf die Quelle. Was macht der #4 in den zweiten parameter bedeuten? Ich nehme an, es ist eine Art von offset, aber ich habe nicht gefunden, die die Dokumentation unterstützen, die sich für die LDR-Anweisung.
- Im Allgemeinen in arm-assembler # wird verwendet, um anzuzeigen, einen sofortigen Mehrwert.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Lädt R3, die von der Adresse in R0 + 4 bytes. Also, ja, es ist ein byte-offset. Siehe diese Erklärung der Adressierungsarten.
Es fügt 4, um den Wert in R0 und nutzt das, wie die Adresse zum laden eines 32-bit-Wert in das register R3
In GNU gas -, wird der hash
#
ist nur erforderlich für ARMv7, wenn Sie nicht mit.syntax unified
Zum Beispiel, können Sie schreiben es ohne
#
für ARMv8aarch64-linux-gnu-as
:oder wenn die Verwendung
.syntax unified
imarm-linux-gnueabihf-as
:Mehr details unter: Ist der hash-erforderlich für unmittelbare Werte im ARM assembly?