因为工作,需要简单了解下汇编,发现release版本下VC作的优化蛮有意思,高手手下留情,我是汇编小白。
系统:Windows XP 开发环境:VS 2005 项目配置: Release版本,02级别优化
代码如下:
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里展开了。