【问题标题】:Disassembler Visual Studio C++反汇编程序 Visual Studio C++
【发布时间】:2017-12-06 20:05:53
【问题描述】:

我在 Visual Studio 和 disassembler 窗口中使用调试来获取十六进制的指令代码,但是当 main 调用一个函数时(如图 1),功能指令出现在一个单独的部分(如图2) 有什么方法可以显示功能指令作为 main 的一部分出现?

反汇编程序窗口中的主要部分

反汇编窗口中的函数部分 谢谢,

【问题讨论】:

  • 很难猜出您在说什么,我认为您希望函数内联。在您构建 Release 构建之前,这不会发生,现在您正在查看未优化的 Debug 构建代码。

标签: c++ visual-studio disassembly


【解决方案1】:

基于mov eax, 0CCCCCCCCh,您似乎正在使用调试版本。

在调试模式下,Visual Studio 默认不内联任何函数。

您可以切换到发布模式或在编译器设置中启用函数内联(C/C++ - 优化 - 内联函数扩展),并且对 fun() 的调用可能会被内联。

【讨论】:

    【解决方案2】:

    反汇编始终是一个单独的窗口,反汇编窗口的上下文菜单中有一些选项可让您控制显示的内容(例如,源代码与否,或指令地址与否)。

    【讨论】:

    • 是的,我知道,但我关心的是指令代码的顺序,即我希望函数代码作为 main 的一部分
    • 但它不是主要的一部分。如反汇编所示,它是另一个具有自己的局部变量和堆栈操作的函数的call。与代码实际上在main中的指令不同
    • @noor:编译器通常不知道是否有更多的调用者。这阻碍了内联
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-21
    • 2014-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-18
    相关资源
    最近更新 更多