Heim >Backend-Entwicklung >C++ >Wie kann ich beim Kompilieren von C/C-Quellcode durch GCC eine Assemblercode-Ausgabe erhalten?

Wie kann ich beim Kompilieren von C/C-Quellcode durch GCC eine Assemblercode-Ausgabe erhalten?

Susan Sarandon
Susan SarandonOriginal
2024-12-27 06:51:09531Durchsuche

How Can I Get Assembly Code Output from GCC Compiling C/C   Source Code?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn