Wenn Sie gcc verwenden, können Sie gcc -O2 -S -c foo.c
nach dieser Seite aufrufen, um die Ausgabebaugruppe zu erhalten in einer von Menschen lesbaren Form.
Mit gcc können Sie die Option -S
verwenden:
Die meisten anderen Optionen (wie -O2
) können hier ebenfalls verwendet werden, um zu bestimmen, welche Art von Assemblercode erzeugt wird.
Beachten Sie jedoch, dass dies lediglich einen Zwischenschritt darstellt, den der Compiler trotzdem durchläuft (nicht die Generierung einer Assembly-Quelldatei, sondern den Maschinencode, den sie darstellt). Das Endergebnis nach der Übergabe dieses Codes durch einen Assembler unterscheidet sich in keiner Weise von der direkten Kompilierung direkt in den Maschinencode.
Dein Compiler sollte eine Option dafür haben. Für gcc können Sie beispielsweise die Option -S verwenden. Ein kurzes Beispiel:
%Vor% Kompilieren Sie es mit der Option -S
. Dadurch wird eine test.s-Datei erzeugt, die die Assembly enthält:
Das macht dein Compiler.
Der Compiler kompiliert Ihr C-Programm zur Maschinensprache, die eine binäre Darstellung des Maschinenprogramms ist. Wenn ein Mensch eine Maschinensprache schreiben will, schreibt er sie in Assembler, was in die binäre Maschinensprache übersetzt wird.
Der Assembler-Code ist einfach eine von Menschen lesbare Form der binären Maschinensprache.
Das C-Programm:
%Vor%kompilieren Sie es
%Vor%zerlegen Sie es:
%Vor% Die meisten Compiler verfügen über eine Option zum Generieren von Assembly-Auflistungen zusammen mit den Binärdateien.
In Visual Studio finden Sie es unter Abschnitt "Codegenerierung" in den Dateieigenschaften.
Mit gcc können Sie -S-Schalter (Großbuchstaben S) verwenden
Schließlich, wenn Sie eine Binärdatei haben, können Sie objdump -S (Großbuchstaben S) verwenden.
Da Sie Dev-C ++ erwähnt haben, ist es erwähnenswert, dass das Flag -S
auch dort funktioniert. Unter Windows nimmt Dev-C ++ immer noch die Ausgabe .exe auf, aber das Ergebnis wird keine ausführbare Datei sein. Ändern Sie einfach die Erweiterung in .txt oder was auch immer, damit sie im Editor Ihrer Wahl gelesen werden kann. Fügen Sie Optionen / Markierungen unter Projekt & gt; Projekt Optionen & gt; Parameter & gt; Compiler oder Extras & gt; Compiler Optionen hinzu.
Siehe diese Frage . Diese Antwort kann hilfreich sein, wenn Sie beabsichtigen, die Baugruppe zu lesen . Sie können auch ein Programm kompilieren und dann disasm verwenden, um die Assembly-Ausgabe zu erhalten.