【发布时间】:2014-09-16 21:42:58
【问题描述】:
在 Windows 中,可以将 __asm nop 替换为 asm volatile("nop");(用于 GCC 编译器)并产生相同的结果吗?
我已经读到volatile()(在 GCC 中)保证调用不会被优化掉。但是,它不直接移植到 Windows,我很好奇它是否可以简单地删除,或者是否需要用类似的结构替换。
【问题讨论】:
-
这是一条
nop指令,它明确什么都不做。您可能需要提供更多上下文来揭示为什么它可能首先被包含在内。 -
MSVC++ 代码优化器不会与内联汇编混淆。所以,是的。
-
@GregHewgill 我的理解是,如果您在 GCC 中使用 volatile 命令,它不会被优化掉,并允许各种功能(即非锁定数据结构等)。我还应该提到,我不关心为什么有人会选择编写这段代码,我只关心如何移植它并获得相同的结果。
-
@HansPassant 请将您的回复放在网站上并将其放入答案中,以便我接受。谢谢!