2016-03-27 13 views
0

in Visual Studio Demontage sieht es das Instruktions-Bytes für die x86-Baugruppe für C++ Code zeigt:Erhalten Sie x86-Befehlsgröße für C++ - Code?

0F B6 54 24 25  movzx  edx,byte ptr [t] 
^^ these are what I want 

I für jeden Befehl die Gesamtbefehlsgröße in die Lage sein möchte, zu erhalten, ohne den ++ Code C Teil eines Visual Studio-Projekts sein. Idealerweise möchte ich diese Informationen aus einer C# -Anwendung "interpretieren" können.

Was ist der beste Weg, dies zu tun? Verfügt GCC über eine Option zum Generieren dieser Befehlsbytes als Teil des Assembly-Eintrags? Ich habe sie nur in der Visual Studio IDE gesehen.

+2

'objdump -d' möglicherweise' objdump -dS'. – Jester

Antwort

1

Sicherlich. Dies ist jedoch keine Funktion von gcc, sondern ein Artefakt der Zerlegung von kompiliertem Code. Mit GCC können Sie direkt zu Assembly kompilieren, aber es zeigt Ihnen die Hex-Bytes nicht. Um die Bytes zu sehen, versuchen Sie dies:

gcc -c my_file.s 

Dies wird my_file.o produzieren. Damit in der Hand, versuchen jetzt das:

objdump -d my_file.o 

Diese Datei zerlegen wird (rechts) und zeigen Ihnen die passende Maschinensprache (nach links).

Update nach Frage Änderung

Und, ja, können Sie Cygwin unter Windows und objdump unter Cygwin installieren. Auf diese Weise können Sie Ihren C# -Code einfach auf die gleiche Weise ausgeben.

+0

Hallo, ich habe das gerade wörtlich entdeckt und musste meine Frage schnell bearbeiten. Wäre es möglich, den C++ - Code mit GCC zu kompilieren und dann objdump, alles aus einer C# -Anwendung unter Windows? – user997112

+0

Offensichtlich ist es möglich ... – Jester

+0

Nun, Sie könnten 'g ++' verwenden, um natürlich C++ - Code zu kompilieren, aber nicht C# -Code. –