69,336
社区成员
发帖
与我相关
我的任务
分享
int i = 2;
x=(++i)+(++i)+(++i);
=>
int i = 2;
i = i + 1;//3
i = i + 1;//4
tmp = i + i;//4+4=8
i = i + 1;//5
x = tmp + i;//8 + 5 = 13
//i + 1
00401044 8B 45 F0 mov eax,dword ptr [ebp-10h]
00401047 83 C0 01 add eax,1
0040104A 89 45 F0 mov dword ptr [ebp-10h],eax
//i + 1
0040104D 8B 4D F0 mov ecx,dword ptr [ebp-10h]
00401050 83 C1 01 add ecx,1
00401053 89 4D F0 mov dword ptr [ebp-10h],ecx
//i+i,暂存于edx寄存器中
00401056 8B 55 F0 mov edx,dword ptr [ebp-10h]
00401059 03 55 F0 add edx,dword ptr [ebp-10h]
//i+1
0040105C 8B 45 F0 mov eax,dword ptr [ebp-10h]
0040105F 83 C0 01 add eax,1
00401062 89 45 F0 mov dword ptr [ebp-10h],eax
//edx+i,(相当于表达式中的i+i+i)
00401065 03 55 F0 add edx,dword ptr [ebp-10h]
00401068 89 55 EC mov dword ptr [ebp-14h],edx
int i = 2;
x=(++i)+(++i)+(++i);
=>
int i = 2;
i = i + 1;//3
i = i + 1;//4
tmp = i + i;//4+4=8
i = i + 1;//5
x = tmp + i;//8 + 5 = 13