arm-linux-gnueabi-compiler-Optionen
Ich bin mit, arm-linux-gnueabi-gcc zum kompilieren von C Programmen für ARM-Prozessoren unter Linux. Allerdings bin ich mir nicht sicher, was ist der Standard-ARM-Modus, für die es kompiliert.
Beispielsweise für den C-code:
test.c
unsigned int main()
{
return 0x1ffff;
}
arm-linux-gnueabi-gcc -o test test.c
nun, wenn ich einen Blick in das disassembly der main () - Funktion mit objdump, ich kann sehen:
arm-linux-gnueabi-objdump -d test
<main>:
push {r7}
add r7, sp, #0
movw r3, #65535 ; 0xffff
movt r3, #1
mov r0, r3
mov sp, r7
pop {r7}
bx lr
scheint es, dass dies der Demontage für den Daumen-Modus von ARM (wegen dem push-Befehl).
Wie kann ich die Anzeige der Demontage wie folgt vor:
.sect ".text"
.global _fn
_fn: MOVW A1,#65535
MOVT A1,#1
BX LR
oder diese
.sect ".text"
.global _fn
_fn: LDR A1, CON1
BX LR
.sect ".text"
.align 4
CON1: .word 0x1ffff
Sah ich dieses Beispiel hier:
http://e2e.ti.com/support/development_tools/compiler/f/343/t/40580.aspx
allerdings bin ich nicht zum anzeigen der Demontage die Art und Weise es wird dort angezeigt.
Dank.
Du musst angemeldet sein, um einen Kommentar abzugeben.
push nicht unbedingt sagen, es ist im thumb-Modus, in der Tat ARM die neue assembly-syntax genannt
unified assembly language
was bedeutet, dass in den meisten Fällen können Sie kompilieren Sie denselben code, umarm
oderthumb-2
Befehlssätzen.Andere problem ist, dass, die Sie kompilieren in
-O0
- Modus, fügt einige zusätzliche Anweisungen für die einfache debugability. Versuchen-O2
und Sie sollten den Unterricht fließen, die Sie wollen.gcc
mit-v
Schalter, wie inarm-linux-gnueabi-gcc -v
sollte dir zeigen, wie es gebaut ist, die auch sagt, dass Sie die Allgemeinen Standard-Optionen, die es verwendet, bei der Kompilierung von Quellcode.Eine Letzte Sache, die gezielte Montage-Sequenz, die Sie erwähnt verwendet
ATPCS
registrieren naming-Schema (schauen Sie objdump doc für Informationen), verwendet esa1
stattr0
zum Beispiel. Sie können auch per Einstellungdisassembler-options
imobjdump
mit-M
wechseln. Wie unten;Weitere option ist, um die Montage Ausgabe von
gcc
selbst mit-S
wechseln. Wie unten;dann sollten Sie sich eine neue Datei namens
test.s
im gleichen Ordner. Allerdings weiß ich nicht, ob es eine option für Sie, um das register zu benennen.Ich glaube, die Standardeinstellung ist " Thumb-Modus:
Den vollen ARM-Anweisungen generiert werden kann mit der-marm Flagge: