|
发表于 2014-8-25 21:41:48
|
显示全部楼层
这是debug的结果:
194: int x=1,y,z;
00401028 mov dword ptr [ebp-4],1 ;将1 赋给 dword ptr [ebp-4]
195: y=(++x)*(++x); 这是将要执行的C语言代码
0040102F mov eax,dword ptr [ebp-4] ; 将dword ptr [ebp-4]值赋给eax ( equ x ) = 1
00401032 add eax,1 ; eax + 1 eax = 2
00401035 mov dword ptr [ebp-4],eax ; 将 eax 赋值给dword ptr [ebp-4]
00401038 mov ecx,dword ptr [ebp-4] ; 将dword ptr [ebp-4] 赋值给ecx = 2
0040103B add ecx,1 ; ecx = ecx + 1, ecx = 3
0040103E mov dword ptr [ebp-4],ecx ; 将ecx 赋值给dword ptr [ebp-4] ,其值是3
00401041 mov edx,dword ptr [ebp-4] ; 将dword ptr [ebp-4] 赋值给 edx, edx = 3
00401044 imul edx,dword ptr [ebp-4] ; edx * dword ptr [ebp-4]
00401048 mov dword ptr [ebp-8],edx ; 结果放在dword ptr [ebp-8]
在遇到不明白的时候可以自己debug一下,可以看看计算机是怎样执行的
在这他是先执行括号里面的
|
|