gpt4 book ai didi

c++ - 内联汇编 (__asm) block 是否会阻止功能优化?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:00:12 24 4
gpt4 key购买 nike

当使用 Microsoft Visual C++(不是 CLI,只是标准的原生 C++)时,内联汇编是否会导致函数优化被禁用?

当我使用 IDA 检查时, block 外的一些函数代码似乎确实发生了变化,但我不确定是什么原因。该函数(相对)简单,包含位操作和一些数学运算,但没有外部调用。

我能想到的其他可能原因是:

  • 额外配置以在内联汇编中启用调试。
  • 异常处理的改变(虽然看起来并不是这样)
  • 由于某些未知的编译器逻辑而部分内联其他内容。

有什么想法吗?

最佳答案

是的。请参阅 MSDN 文章:Optimizing Inline Assembly以及Advantages of Inline Assembly

来自文章:

The presence of an __asm block in a function affects optimization in several ways. First, the compiler doesn't try to optimize the __asm block itself. What you write in assembly language is exactly what you get. Second, the presence of an __asm block affects register variable storage. The compiler avoids enregistering variables across an __asm block if the register's contents would be changed by the __asm block. Finally, some other function-wide optimizations will be affected by the inclusion of assembly language in a function.

关于c++ - 内联汇编 (__asm) block 是否会阻止功能优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10357207/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com