|
发表于 2013-10-19 20:42:12
|
显示全部楼层
p = (i++) + (i++) + (i++);
00401036 mov eax,dword ptr [ebp-4] ;此时eax = 5
00401039 add eax,dword ptr [ebp-4] ;eax = 10
0040103C add eax,dword ptr [ebp-4] ;在加一下,eax = 15
0040103F mov dword ptr [ebp-0Ch],eax ;把eax放到dword ptr [ebp-0Ch]里面就得出p的值了
00401042 mov ecx,dword ptr [ebp-4]
00401045 add ecx,1 ;这里执行完后 i = 6
00401048 mov dword ptr [ebp-4],ecx
0040104B mov edx,dword ptr [ebp-4]
0040104E add edx,1 ;执行完后 i = 7
00401051 mov dword ptr [ebp-4],edx
00401054 mov eax,dword ptr [ebp-4]
00401057 add eax,1 ;完后 i = 8
0040105A mov dword ptr [ebp-4],eax ;把 eax的值放到dword ptr [ebp-4]里面就得出 i 的值了
你可以在vc6.0上反汇编调试的看一下,利用这个方法j与q的值得执行过程也就这样就出来了,但对于不同的编译器来说,结果可能是不同的
|
|