由于工做,须要简单了解下汇编,发现release版本下VC做的优化蛮有意思,高手手下留情,我是汇编小白。函数
系统:Windows XP 开发环境:VS 2005 项目配置: Release版本,02级别优化优化
代码以下:code
int test(int a, int b) { int c = a + b; int i = 0; for (; i < 50; ++i) { c = c + i; } return c; } int _tmain(int argc, _TCHAR* argv[]) { int rt = 0; rt = test(1, 2); printf("%d", rt); return 0; }
汇编代码:开发
int _tmain(int argc, _TCHAR* argv[]) { int rt = 0; rt = test(1, 2); 00401000 mov ecx,3 00401005 xor eax,eax 00401007 add ecx,eax 00401009 add eax,1 0040100C cmp eax,32h 0040100F jl wmain+7 (401007h) printf("%d", rt); 00401011 push ecx 00401012 push offset string "%d" (4020E4h) 00401017 call dword ptr [__imp__printf (40209Ch)] 0040101D add esp,8 return 0; 00401020 xor eax,eax } 在O2级别,这个test函数被在main里展开了。