反汇编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中发生很大变化. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- Windows Containers 大冒险: 优化计划(Dockerfile)
- assembly – windows进程内存布局
- Windows系统下latex:texlive2018和texstudio
- windows远程桌面连接centos7桌面显示,安装xdrp
- libglog.dll CMake 在Windows上编译、应用glog
- windows-phone-8 – Windows Phone 8.1应用程序无法在模拟器
- WIN10家庭中文版远程提示要求的函数不支持 win10家庭版提示
- HM NIS Edit打包Electron应用的注意事项
- .net – System.Windows.Input.Key枚举中的Equals键没有条目
- 我在哪里报告Windows核心库问题?
- .net – 在mscorlib.dll中发生类型“System.Thre
- 强制Xamarin在Windows上使用Mono
- 在Windows上使用TortoiseSVN更改文件名大小写
- cmd – 如何为特定应用程序强制传出ip? ForceBi
- windows – 如何使用Win32 API获取多个监视器的显
- r – 在windows上安装gputools
- Windows – LogonUser – 来自系统服务的CreateP
- winapi – Win32 No-MFC中的消息映射
- 如何减少Windows Azure网站上托管的Orchard CMS站
- 如何在Windows中使用golang获取文件描述(产品名称
