gpt4 book ai didi

c++ - 为什么即使在非常简单的情况下,volatile vars 也没有得到优化?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:49:21 27 4
gpt4 key购买 nike

如果我编译代码

int main()
{
int i;
i = 1;
i = 2;
}

在带有发布和优化的 VS 中,反汇编看起来像:

int main()
{
int i;
i = 1;
i = 2;
}
010D1000 xor eax,eax
010D1002 ret

但是如果我写“volatile”这个词:

int main()
{
01261000 push ecx
volatile int i;
i = 1;
01261001 mov dword ptr [esp],1
i = 2;
01261008 mov dword ptr [esp],2
}
0126100F xor eax,eax
01261011 pop ecx
01261012 ret

有谁知道为什么VS留下这段代码?它有任何副作用吗?它是程序中唯一的代码,那么为什么优化器不能直接丢弃它呢?

最佳答案

来自 this引用页:

volatile - the object can be modified by means not detectable by the compiler and thus some compiler optimizations must be disabled.

关于c++ - 为什么即使在非常简单的情况下,volatile vars 也没有得到优化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8249012/

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