Heim >Backend-Entwicklung >C++ >Wie kann ich mithilfe von GCC und objdump eine Assembler-Ausgabe aus meinem C/C-Code erhalten?

Wie kann ich mithilfe von GCC und objdump eine Assembler-Ausgabe aus meinem C/C-Code erhalten?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-24 05:21:20359Durchsuche

How can I get assembler output from my C/C   code using GCC and objdump?

Assembler-Ausgabe von der C/C-Quelle in GCC abrufen

Um den Kompilierungsprozess zu analysieren, ist das Extrahieren des ausgegebenen Assemblercodes unerlässlich. Eine effektive Methode ist die Verwendung der Option -S in GCC (oder G).

Verwendung der Option -S

Durch Angabe von -S verarbeitet der Präprozessor die Quelldatei, führen Sie die erste Kompilierung durch, halten Sie jedoch an, bevor Sie den Assembler aufrufen. Dadurch können Sie den Code untersuchen, bevor er assembliert wird. Für eine bessere Lesbarkeit verwenden Sie -fverbose-asm.

gcc -S helloworld.c

Die Ausgabedatei heißt standardmäßig helloworld.s. Um dies zu ändern, verwenden Sie die Option -o.

gcc -S -o my_asm_output.s helloworld.c

Analysieren vorhandener Objektdateien

Wenn Sie nur eine Objektdatei haben, können Sie objdump mit der Option -o verwenden. Option -disassemble (-d).

objdump -S --disassemble helloworld > helloworld.dump

Für erweiterte Informationen sollten Sie die Verwendung von -rwC (für Symbolverschiebungen und Namen) in Betracht ziehen demangling), -Mintel (für Intel-Syntax mit x86) und -r (um Referenzen von nicht verknüpften Objekten einzuschließen).

objdump -drwC -Mintel -S foo.o | less

Diese Methoden liefern wertvolle Einblicke in den Kompilierungsprozess und ermöglichen Ihnen die Analyse der Assembly Code Ihrer C/C-Programme.

Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe von GCC und objdump eine Assembler-Ausgabe aus meinem C/C-Code 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