|
发表于 2022-2-21 07:31:07
|
显示全部楼层
本帖最后由 jhq999 于 2022-2-21 08:17 编辑
- 5: printf("%d\n%d\n%d\n%d\n", ++m, --m, m++, m--);
- 00A81B75 8B 45 F8 mov eax,dword ptr [m]
- 00A81B78 89 85 30 FF FF FF mov dword ptr [ebp-0D0h],eax ;dword ptr [ebp-0D0h]=8
- 00A81B7E 8B 4D F8 mov ecx,dword ptr [m]
- 00A81B81 83 E9 01 sub ecx,1
- 00A81B84 89 4D F8 mov dword ptr [m],ecx
- 00A81B87 8B 55 F8 mov edx,dword ptr [m]
- 00A81B8A 89 95 2C FF FF FF mov dword ptr [ebp-0D4h],edx ; dword ptr [ebp-0D4h]=7
- 00A81B90 8B 45 F8 mov eax,dword ptr [m]
- 00A81B93 83 C0 01 add eax,1
- 00A81B96 89 45 F8 mov dword ptr [m],eax ;dword ptr [m]=8
- 00A81B99 8B 4D F8 mov ecx,dword ptr [m]
- 00A81B9C 83 E9 01 sub ecx,1
- 00A81B9F 89 4D F8 mov dword ptr [m],ecx ;dword ptr [m]=7
- 00A81BA2 8B 55 F8 mov edx,dword ptr [m]
- 00A81BA5 83 C2 01 add edx,1
- 00A81BA8 89 55 F8 mov dword ptr [m],edx ; dword ptr [m]=8
- 00A81BAB 8B F4 mov esi,esp
- 00A81BAD 8B 85 30 FF FF FF mov eax,dword ptr [ebp-0D0h]
- 00A81BB3 50 push eax ;压入8
- 00A81BB4 8B 8D 2C FF FF FF mov ecx,dword ptr [ebp-0D4h]
- 00A81BBA 51 push ecx ;压入7
- 00A81BBB 8B 55 F8 mov edx,dword ptr [m]
- 00A81BBE 52 push edx ;压入8
- 00A81BBF 8B 45 F8 mov eax,dword ptr [m]
- 00A81BC2 50 push eax ;压入8
- 00A81BC3 68 58 88 A8 00 push 0A88858h
- 00A81BC8 FF 15 4C C3 A8 00 call dword ptr ds:[0A8C34Ch]
复制代码
作为参数从右向左,遇到后缀自增自减先把m值存储起来后自增自减,所以后两个参数是8和7,遇到前缀自增自减先自增自减直到最后把m值做参数传入函数,所以7+1,8-1,7+1,最后m=8,做为前两个参数的值 |
|