Ich habe eigentlich ein ganz einfaches ARM7 Assembler-Problem. Ich möchte die Adresse einer Tabelle in ein Register speichern. Allerdings muss die Adresse relativ zum PC ermittelt werden. Also ich brauche das Gegenstück zum Befehl LEA bei anderen Prozessoren. (Die absolute Adresse mit "LDR R0, =table" ins Register laden ist nicht das was ich möchte.) Außerdem muss es der GNU as übersetzen können.
Was macht denn LEA in dem Fall: Es wird eine Konstante zum PC addiert und das Ergebnis in einem Register gespeichert. Also add r0, pc, #table-($+8) was sich im Assembler der Einfachheit halber auch so schreiben lässt: adr r0, table
Danke. Ich hab schon vermutet, dass es irgendwas mit ADD und PC zu tun haben muss, da es keinen speziellen Befehl gibt. Auf die Syntax bin ich nicht gekommen. Steht das $ bei der ersten Variante für die Adresse des Befehls? Könnte ich das auch so schreiben: ADD R0, PC, #table - $ - 8 ?
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.