私がリリースと最適化でコードVSで非常に単純なケースでもvolatile varsが最適化されないのはなぜですか?
int main()
{
int i;
i = 1;
i = 2;
}
をコンパイルする場合、分解は次のようになります。
int main()
{
int i;
i = 1;
i = 2;
}
010D1000 xor eax,eax
010D1002 ret
が、私は言葉 "揮発性" を書き込む場合:
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がこのコードを残すのか知っていますか?そこから副作用はありますか? これはプログラム内の唯一のコードなので、なぜオプティマイザはそれを放棄できないのですか?
"私はXをするように言った。それはなぜXをするのか?" – delnan
+1は、うまく構築された、アルビートの誤った質問です。 –
ローカルの非静的変数volatileを宣言するのは無意味なので、この状況を最適化するためには、(MSVC)開発者にとって価値がないと思います。 –