是否可以在 Microsoft Visual Studio 中看到 C/C++ 代码的程序集?我可以要求查看特定的装配类型(MIPS 装配)吗?
1 回答
是否可以在 Microsoft Visual Studio 中看到 C/C++ 代码的程序集?
是的。有以下三种基本方式:
要求编译器在编译过程中为每个翻译单元生成一个汇编列表。
这是使用
/FA
switch完成的,它有多种选项可用于自定义生成的列表类型。您可以在 IDE 中通过右键单击解决方案资源管理器中的项目并打开项目设置来进行配置。然后,您会在 C/C++ → 输出文件 → 程序集输出下找到各种选项。
确保为适当的项目设置启用此选项;即,对于“调试”或“发布”模式!尽管您可以为其中一个或两个配置它,但我的建议是仅在“发布”模式下启用它,因为查看未优化的调试模式汇编代码是一种无趣的浪费时间。
显示当前正在调试的二进制文件的实际汇编代码。
在调试器下运行已编译的应用程序,然后中断它(通过点击定义的断点或任意按下工具栏上的“中断”按钮;您甚至可以使用调试器单步进入程序)。一旦执行中断,在编辑器中右键单击并选择“转到程序集”。使用键盘,这是Ctrl+ Alt+D或Alt+ 8。
我将“反汇编”窗口停靠为我的主要代码选项卡之一,因此它始终存在,我可以按需切换到它。尽管此窗口只能在调试模式下显示,但 Visual Studio 很好地支持这一点,因为它维护了单独的“设计”和“调试”模式窗口布局。
(请注意,这不适用于静态库,因为它们在链接到可执行文件之前无法执行。对于那些,您将需要使用方法#1。)
静态反汇编你的二进制文件。
打开 Visual Studio 命令提示符(以便正确设置环境变量),然后使用 link.exe 的
/disasm
选项。例如:link.exe /disasm /dump /linenumbers /out:MyApp.asm MyApp.exe
我可以要求查看特定的装配类型(MIPS 装配)吗?
不会。您只会在编译时看到您实际定位的处理器的汇编代码。Visual Studio 的现代版本仅支持 x86-32(也称为 x86 或 IA-32)、x86-64(也称为 x64 或 AMD64)和 ARM。从历史上看,还有 Alpha、PowerPC 和可能的 MIPS 版本的编译器。如果您拥有其中之一,并且可以生成 MIPS 二进制文件,那么它将支持必要的选项。
如果您没有 MIPS 编译器,那么显然无法查看 MIPS 汇编代码!x86 编译器不会生成 MIPS 程序集!