Ich habe ein "Hallo, Welt!" Programm in ARM Assemblersprache und ich möchte es in Shell-Code umwandeln, um es in einer Speicherregion auszuführen. In der Intel Assembly-Sprache habe ich den .data-Abschnitt losgeworden, da nur der .text-Abschnitt bei der Konvertierung in Shell-Code verwendet wird. (See here)Hallo Welt in ARM-Versammlung ohne Datenabschnitt
Jetzt habe ich Schwierigkeiten, das gleiche in ARMs Assemblersprache zu tun. Die Basis ist der folgende Code:
Armbaugruppe Hallo Welt
.global _start
_start:
mov r7, #4
mov r0, #1
ldr r1,=string
mov r2, #12
swi 0
mov r7, #1
swi 0
.data
string:
.ascii "Hello, World"
Modified Armbaugruppe Hallo Welt die .data Abschnitt
.global _start
.global mymessage
mymessage:
mov r7, #4
mov r0, #1
pop {r1}
mov r2, #12
swi 0
mov r7, #1
swi 0
_start:
bl mymessage
.ascii "Hello, World"
Aber das ist nicht wegzulassen funktioniert , da dies eine "illegale Anweisung" anscheinend ist. Irgendwelche Ideen?
ARM bereits PC-bezogener hat Adressierung, und in jedem Fall 'bl' auf dem Stapel die Absenderadresse nicht drücken. – Jester
'bl' ist das Äquivalent, aber ARM legt die Rücksprungadresse nicht auf den Stapel. Aber da ARM PC relative Adressierung hat, brauchen Sie den Trick überhaupt nicht. – Jester
Ah, ich verstehe, danke! – Marvin