printf("%d\n%d\n%d\n%d\n%d\n%d\n",++i,--i,i++,i--,-i++,-i--);
00412D3F 8B 45 FC mov eax,dword ptr [ebp-4] //ebp-4就是i=8
00412D42 F7 D8 neg eax //-8
00412D44 89 45 F8 mov dword ptr [ebp-8],eax
00412D47 8B 4D F8 mov ecx,dword ptr [ebp-8]
00412D4A 51 push ecx // ecx=eax=-8 倒数第一个数
00412D4B 8B 55 FC mov edx,dword ptr [ebp-4]
00412D4E F7 DA neg edx //-8
00412D50 89 55 F4 mov dword ptr [ebp-0Ch],edx
00412D53 8B 45 F4 mov eax,dword ptr [ebp-0Ch]
00412D56 50 push eax //eax=edx=-8 倒数第二个数
00412D57 8B 4D FC mov ecx,dword ptr [ebp-4]
00412D5A 89 4D F0 mov dword ptr [ebp-10h],ecx
00412D5D 8B 55 F0 mov edx,dword ptr [ebp-10h]
00412D60 52 push edx //edx=ecx=8 倒数第三个数
00412D61 8B 45 FC mov eax,dword ptr [ebp-4]
00412D64 89 45 EC mov dword ptr [ebp-14h],eax
00412D67 8B 4D EC mov ecx,dword ptr [ebp-14h]
00412D6A 51 push ecx //ecx=eax=8 倒数第四个数
00412D6B 8B 55 FC mov edx,dword ptr [ebp-4] //edx=ebp-4=8
00412D6E 83 EA 01 sub edx,1 //edx=edx-1=7
00412D71 89 55 FC mov dword ptr [ebp-4],edx //ebp-4=edx=7
00412D74 8B 45 FC mov eax,dword ptr [ebp-4]
00412D77 50 push eax //eax=edx=7 倒数第五个数 你所关心的
00412D78 8B 4D FC mov ecx,dword ptr [ebp-4] //ecx=ebp-4=7
00412D7B 83 C1 01 add ecx,1 //ecx=ecx+1=8
00412D7E 89 4D FC mov dword ptr [ebp-4],ecx //ecx=ebp-4=8
00412D81 8B 55 FC mov edx,dword ptr [ebp-4] //edx=ebp-4=8
00412D84 52 push edx //edx=8 倒数第六个数
00412D85 68 B4 A1 42 00 push offset string "%d\n%d\n%d\n%d\n%d\n%d\n" (0042a1b4)
00412D8A 8B 45 FC mov eax,dword ptr [ebp-4]
00412D8D 83 C0 01 add eax,1
00412D90 89 45 FC mov dword ptr [ebp-4],eax
00412D93 8B 4D FC mov ecx,dword ptr [ebp-4]
00412D96 83 E9 01 sub ecx,1
00412D99 89 4D FC mov dword ptr [ebp-4],ecx
00412D9C 8B 55 FC mov edx,dword ptr [ebp-4]
00412D9F 83 C2 01 add edx,1
00412DA2 89 55 FC mov dword ptr [ebp-4],edx
00412DA5 8B 45 FC mov eax,dword ptr [ebp-4]
00412DA8 83 E8 01 sub eax,1
00412DAB 89 45 FC mov dword ptr [ebp-4],eax
00412DAE E8 9D E5 FE FF call printf (00401350)
00412DB3 83 C4 1C add esp,1Ch //1Ch=28d 28/4(字节)=7个,这个call被压了7个参数,你数数看 再加上 push offset string"%d\n%d\n%d\n%d\n%d\n%d\n" (0042a1b4)
你看下反汇编,看注释
我个人的建议,++和--不要乱用,不然容易出问题的,不同的编译器处理起来也不同的 |