c/c++语言开发共享反汇编Microsoft Visual Studio 2003编译器输出

我看到我认为Microsoft Visual Studio 2003工具输出的目标文件的奇怪行为。 file实用程序告诉我:

 asmfile.obj: 80386 COFF executable not stripped - version 30821 

对于汇编程序创建的对象,但对于来自C文件的对象,我得到:

 cfile.obj: data 

使用Microsoft的dumpbin实用程序和我从cygwin获得的objdump ,我可以反汇编程序集生成的文件,但是我从C-built文件的任一实用程序中都得不到有用的结果。

我有几个与这种差异有关的问题:

我对使用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选项传递给mlcl ,但为了简洁,我省略了它们。 这里描述了 cl选项。

    根据添加到问题的cl命令行选项进行编辑:

    我认为问题是使用/GL选项,它指定将完成链接时代码生成优化。 从该选项的文档页面:

    使用/ GL生成的obj文件将不可用于EDITBIN和DUMPBIN等链接器实用程序。

    使用此选项会导致编译器生成链接器可以执行程序范围优化的.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文件和由dumpbin提供的dumpbin ,但我无法想象这些东西会从VS2003中发生很大变化。

    需要了解更多c/c++开发分享反汇编Microsoft Visual Studio 2003编译器输出,也可以关注C/ C++技术分享栏目—计算机技术网(www.ctvol.com)!

      以上就是c/c++开发分享反汇编Microsoft Visual Studio 2003编译器输出相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/980059.html

      (0)
      上一篇 2021年12月13日
      下一篇 2021年12月13日

      精彩推荐