Ich sehe, was ich denke, ist seltsames Verhalten von Objektdateien von den Microsoft Visual Studio 2003-Tools ausgegeben. Der file
Dienstprogramm sagt mir:zerlegen Microsoft Visual Studio 2003-Compiler-Ausgabe
asmfile.obj: 80386 COFF executable not stripped - version 30821
Für Objekte vom Assembler erstellt, sondern auch für Objekte aus C-Dateien kommen, bekomme ich nur:
cfile.obj: data
Mit dumpbin
Dienstprogramm Microsoft und den objdump
ich von Cygwin bekam , Ich kann die Assembly-built-Datei zerlegen, aber ich bekomme keine nützlichen Ergebnisse von jedem Dienstprogramm für die C-built-Dateien.
Ich habe ein paar Fragen zu diesem Unterschied verbunden:
- Was das Objekt Dateiformat von der MSVC2003 Compiler erzeugt wird?
- Wie kann ich diese Objektdatei zerlegen?
Ich interessiere mich besonders für die Demontage in AT & T-Syntax in immer - ich bin ein Hafen einer großen Source-Basis zu tun, um es mit GCC funktioniert, und ich möchte diese Methode als Abkürzung verwenden für einige der Inline-Assembly-Routinen im Projekt.
Bearbeiten: Hinzufügen weiterer Informationen.
Als ich dumpbin
auf eine dieser Dateien ausführen gibt mir keine Ergebnisse:
C:\> dumpbin /disasm Func.obj
Microsoft (R) COFF/PE Dumper Version 7.10.6030
Copyright (C) Microsoft Corporation. All rights reserved.
Dump of file Func.obj
FileType: ANONYMOUS OBJECT
Mit objdump
, es gibt:
$ objdump -d Func.obj
objdump: Func.obj: File truncated
Auf den von der Montage gebaut Dateien, ich vernünftige Ergebnisse zu erzielen.
Nochmals bearbeiten: Hinzufügen von Befehlszeileninformationen.
Die Assembly-Dateien sind mit einer Befehlszeile ähnlich der folgenden gebaut:
ml -nologo -W3 -WX -c -coff -FoAssemblyFile.obj -Zi -Cx AssemblyFile.asm
ml
wenn es selbst ausgeführt sagt:
Microsoft (R) Macro Assembler Version 6.15.8803
Copyright (C) Microsoft Corp 1981-2000. All rights reserved.
Die C-Dateien mit dem folgenden Befehl erstellt werden:
cl -nologo -W4 -WX -Gs32768 -GX -Gy -c -FdCFile.pdb -FoCFile.obj -Zi
-Gm -O1 -Oy- -Gy -GL -X CFile.c
Es gibt einige -I
und -D
Optionen an und an cl
übergeben, aber ich habe sie der Kürze halber hier weggelassen. Die cl
Optionen sind here beschrieben.
@Michael: Sie haben recht - obwohl der tatsächlich generierte Code sich ändern könnte, haben sich die Tools wie Dumpbin nicht wesentlich geändert (ältere Versionen haben nicht alle aktuellen Befehlssätze gehandhabt, aber darum geht es). –
Ich werde bearbeiten, um weitere Details hinzuzufügen. Die C-Quelle kann * alles * sein, soweit ich das beurteilen kann - jedes Objekt, das in diesem ganzen Projekt ausgegeben wird, hat das gleiche Verhalten. –
Was sagt 'file' Ihnen den Typ der Objektdatei? –