在 Visual Studio 中显示程序集

sun*_*nny 2 assembly mips mips64 visual-studio-2015

是否可以在 Microsoft Visual Studio 中查看 C/C++ 代码的汇编?我可以要求查看特定的装配类型(MIPS 装配)吗?

Cod*_*ray 6

是否可以在 Microsoft Visual Studio 中查看 C/C++ 代码的汇编?

是的。有以下三种基本方法:

  1. 要求编译器在编译过程中为每个翻译单元发出汇编列表。

    这是使用/FAswitch完成的,它有多种选项可用于自定义生成的列表类型。

    您可以通过在解决方案资源管理器中右键单击项目并打开项目设置来在 IDE 中进行配置。然后,您将找到 C/C++ → 输出文件 → 程序集输出下列出的各种选项。

    确保为适当的项目设置启用此选项;即“调试”或“发布”模式!尽管您可以为其中一个或两者配置它,但我的建议是仅在“发布”模式下启用它,因为查看未优化的调试模式汇编代码是无趣的浪费时间。

  2. 显示当前正在调试的二进制文件的实际汇编代码。

    在调试器下运行已编译的应用程序,然后中断它(通过点击定义的断点或任意按工具栏上的“中断”按钮;您甚至可以使用调试器单步执行程序)。执行中断后,在编辑器中右键单击并选择“转到程序集”。使用键盘,可以是Ctrl+ Alt+DAlt+8

    我将“反汇编”窗口保留为我的主要代码选项卡之一,因此它始终存在,并且我可以按需切换到它。尽管此窗口只能在调试模式下显示,但 Visual Studio 对此支持良好,因为它维护单独的“设计”和“调试”模式窗口布局。

    (请注意,这不适用于静态库,因为它们在链接到可执行文件之前无法执行。对于这些,您将需要使用方法 #1。)

  3. 静态反汇编您的二进制文件。

    打开 Visual Studio 命令提示符(以便正确设置环境变量),然后使用 link.exe 的/disasm选项。例如:

    link.exe /disasm /dump /linenumbers /out:MyApp.asm MyApp.exe
    
    Run Code Online (Sandbox Code Playgroud)

我可以要求查看特定的装配类型(MIPS 装配)吗?

不会。编译时您只会看到实际目标处理器的汇编代码。现代版本的 Visual Studio 仅支持 x86-32(也称为 x86 或 IA-32)、x86-64(也称为 x64 或 AMD64)和 ARM。历史上,也有 Alpha、PowerPC 和可能的 MIPS 版本的编译器。如果您有其中之一,并且可以生成 MIPS 二进制文件,那么它将支持必要的选项。

如果您没有 MIPS 编译器,那么显然没有任何方法可以查看 MIPS 汇编代码!x86 编译器不会生成 MIPS 程序集!