反汇编Microsoft Visual Studio 2003编译器输出
我看到我认为Microsoft Visual Studio 2003工具输出的目标文件的奇怪行为.文件实用程序告诉我:
asmfile.obj: 80386 COFF executable not stripped - version 30821 对于汇编程序创建的对象,但对于来自C文件的对象,我只得到: cfile.obj: data 使用Microsoft的dumpbin实用程序和我从cygwin获得的objdump,我可以反汇编程序集生成的文件,但是我从C-built文件的任一实用程序中都没有得到任何有用的结果. 我有几个与这种差异有关的问题: > MSVC2003编译器生成的目标文件格式是什么? 我对使用AT& T语法进行反汇编特别感兴趣 – 我正在使用大型源代码库来使其与GCC一起工作,我想将此方法用作某些内联汇编例程的快捷方式在项目中. 编辑:添加更多信息. 当我在其中一个文件上运行dumpbin时没有给出任何结果: 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 使用objdump,它给出: $objdump -d Func.obj objdump: Func.obj: File truncated 关于从汇编构建的文件,我得到了合理的结果. 再次编辑:添加命令行信息. 汇编文件使用类似于以下内容的命令行构建: ml -nologo -W3 -WX -c -coff -FoAssemblyFile.obj -Zi -Cx AssemblyFile.asm ml自己执行时说: Microsoft (R) Macro Assembler Version 6.15.8803 Copyright (C) Microsoft Corp 1981-2000. All rights reserved. 使用以下命令构建C文件: cl -nologo -W4 -WX -Gs32768 -GX -Gy -c -FdCFile.pdb -FoCFile.obj -Zi -Gm -O1 -Oy- -Gy -GL -X CFile.c 有一些-I和-D选项传递给ml和cl,但为了简洁起见,我省略了它们. cl选项描述为here.
根据添加到问题的cl命令行选项进行编辑:
我认为问题是使用/ GL选项,它指定将完成链接时代码生成优化.从该选项的文档页面:
使用此选项会导致编译器生成链接器可以执行程序范围优化的.obj文件 – 显然文件格式是专有的(可能在某处记录,但我怀疑没有). / GL(也称为“整个程序优化”,“链接时代码生成”或LTCG)的文档包含有关.obj文件或包含此类对象文件的库的互操作性的若干警告. 原始答案: 您尝试反汇编的.obj文件的C源代码究竟是什么?我使用dumpbin / disasm test.obj获得以下简单的’hello world’程序: Microsoft (R) COFF/PE Dumper Version 8.00.50727.42 Copyright (C) Microsoft Corporation. All rights reserved. Dump of file test.obj File Type: COFF OBJECT _main: 00000000: 55 push ebp 00000001: 8B EC mov ebp,esp 00000003: 6A 01 push 1 00000005: 68 00 00 00 00 push offset $SG4665 0000000A: E8 00 00 00 00 call _printf 0000000F: 83 C4 08 add esp,8 00000012: 33 C0 xor eax,eax 00000014: 3B EC cmp ebp,esp 00000016: E8 00 00 00 00 call __RTC_CheckEsp 0000001B: 5D pop ebp 0000001C: C3 ret Summary 7AC .debug$S 30 .debug$T 2F .drectve 4 .rdata 4 .rtc$IMZ 4 .rtc$TMZ 1D .text 注意:这是使用由VS2005提供的.obj文件和由dump2005提供的dumpbin,但我无法想象这些东西会从VS2003中发生很大变化. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |