当前位置:毕业生招聘信息网知名企业资料制造/能源/化工/物流德尔福·Delphi → 知名企业资料内容

Delphi软件++BT题目理论分析

作者:佚名  来源:不详  发布时间:2007-5-4 14:03:00
为什么VC没有出现大伙分析中的结果呢?我们看看asm代码就知道了
12:       printf("%d,%d,%d,%d,%d,%d,%d\n",i,i--,--i,i,i++,++i,i);
0040102F   mov         eax,dword ptr [ebp-4]
00401032   push        eax
00401033   mov         ecx,dword ptr [ebp-4]
00401036   add         ecx,1
00401039   mov         dword ptr [ebp-4],ecx
0040103C   mov         edx,dword ptr [ebp-4]
0040103F   push        edx
00401040   mov         eax,dword ptr [ebp-4]
00401043   mov         dword ptr [ebp-8],eax
00401046   mov         ecx,dword ptr [ebp-8]
00401049   push        ecx
0040104A   mov         edx,dword ptr [ebp-4]
0040104D   push        edx
0040104E   mov         eax,dword ptr [ebp-4]
00401051   sub         eax,1
00401054   mov         dword ptr [ebp-4],eax
00401057   mov         ecx,dword ptr [ebp-4]
0040105A   push        ecx
0040105B   mov         edx,dword ptr [ebp-4]
0040105E   mov         dword ptr [ebp-0Ch],edx
00401061   mov         eax,dword ptr [ebp-0Ch]
00401064   push        eax
00401065   mov         ecx,dword ptr [ebp-4]
00401068   push        ecx
00401069   push        offset string "%d,%d,%d,%d,%d,%d,%d\n" (0042001c)
0040106E   mov         edx,dword ptr [ebp-4]
00401071   sub         edx,1
00401074   mov         dword ptr [ebp-4],edx
00401077   mov         eax,dword ptr [ebp-4]
0040107A   add         eax,1
0040107D   mov         dword ptr [ebp-4],eax
00401080   call        printf (004010c0)
00401085   add         esp,20h
13:       return;
注意1071和107a两句,很明显,参数从右到左压入堆栈,
此后再执行i--和i++,而此时的i已经不能不影响printf的参数了,尽管
call printf在这两句之后执行,呵呵。
请在邮件中注明:信息来自Byszp.COM