Heim >Backend-Entwicklung >C++ >Wie kann ich beim Kompilieren von C/C-Quellcode durch GCC eine Assemblercode-Ausgabe erhalten?
Assembler-Ausgabe von der C/C-Quelle in GCC abrufen
Um zu analysieren, wie Code kompiliert wird, ist es hilfreich, den ausgegebenen Assembler-Code abzurufen. In GCC kann dies mit der Option -S erreicht werden.
gcc -S helloworld.c
Dadurch werden der Präprozessor und die anfängliche Kompilierung aufgerufen, aber angehalten, bevor der Assembler ausgeführt wird.
Für eine umfassendere Assembly-Ausgabe: Erwägen Sie die Verwendung von -fverbose-asm neben -O0. Beachten Sie jedoch, dass dies bei Standardoptimierungsstufen am besten funktioniert.
Die Standardausgabedatei ist helloworld.s, kann aber mit -o angepasst werden. Darüber hinaus kann -o - verwendet werden, um die Ausgabe direkt auf die Standardausgabe umzuleiten.
gcc -S -o my_asm_output.s helloworld.c
Wenn nur die Objektdatei verfügbar ist, kann objdump mit der Option --disassemble verwendet werden:
objdump -S --disassemble helloworld > helloworld.dump
Dadurch werden Quellzeilen mit der Demontageausgabe verschachtelt. Durch Aktivieren des Debuggens (-g) und Vermeiden von Stripping können die Disassemblierungsdetails verbessert werden.
Für noch mehr Anpassungen sollten Sie Optionen wie -rwC (Symbolverschiebungen), -Mintel (Intel-Syntax) und -r (wichtig für) in Betracht ziehen Objektdateien mit Platzhaltersymbolverweisen).
Zum Beispiel liefert der folgende Befehl einen detaillierten Dump mit Intel-Syntax:
objdump -drwC -Mintel -S foo.o | less
Das obige ist der detaillierte Inhalt vonWie kann ich beim Kompilieren von C/C-Quellcode durch GCC eine Assemblercode-Ausgabe erhalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!