если я скомпилирую код
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 оставляет этот код? есть ли побочный эффект от этого?
это единственный код в программе, так почему оптимизатор не может просто скинуть его?