Heim > Backend-Entwicklung > C++ > Wie kann ich mithilfe von GCC Assemblercode aus einer C/C-Quelle generieren?

Wie kann ich mithilfe von GCC Assemblercode aus einer C/C-Quelle generieren?

Susan Sarandon
Freigeben: 2024-12-21 13:06:14
Original
1023 Leute haben es durchsucht

How Can I Generate Assembly Code from C/C   Source Using GCC?

Generieren der Assembler-Ausgabe aus der C/C-Quelle in GCC

Zur Analyse des Kompilierungsprozesses, Abrufen des ausgegebenen Assemblercodes aus der C/C-Quelle kann von unschätzbarem Wert sein. GCC bietet zwei Methoden, um dies zu erreichen: die Verwendung der Option -S und die Verwendung von objdump.

Verwendung der Option -S:

Die Option -S weist GCC an, das auszuführen Präprozessor und führen Sie die erste Kompilierung durch, halten Sie jedoch vor der Assembler-Ausführung an. Standardmäßig wird die Ausgabe in einer Datei mit der Erweiterung .s gespeichert. Um eine benutzerdefinierte Ausgabedatei anzugeben, verwenden Sie die Option -o.

gcc -S helloworld.c
Nach dem Login kopieren

Objdump verwenden:

Wenn Sie nur die resultierende Objektdatei haben, können Sie objdump verwenden mit der Option --disassemble (-d für eine kürzere Version), um die zu zerlegen Code:

objdump -S --disassemble helloworld > helloworld.dump
Nach dem Login kopieren

Zusätzliche Optionen:

  • -fverbose-asm (für gcc) bietet detaillierte Kommentare zu C-Operanden im Assemblercode.
  • -rwC (objdump) zeigt Symbolverschiebungen an, deaktiviert den Zeilenumbruch und entwirrt C Namen.
  • -Mintel (objdump) ändert die Disassemblierungssyntax für x86-Architekturen in Intel.

Beispiel:

Um einen detaillierten Assembler zu erhalten Ausgabe mit Intel-Syntax aus einer .o-Datei, die Platzhalter für Symbolverweise enthalten kann, verwenden:

objdump -drwC -Mintel -S foo.o | less
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich mithilfe von GCC Assemblercode aus einer C/C-Quelle generieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage