由於工做,須要簡單瞭解下彙編,發現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裏展開了。