void SwapByValue(int a,int b)
{
00311490 push ebp //设基值
00311491 mov ebp,esp
00311493 sub esp,0CCh
00311499 push ebx
0031149A push esi
0031149B push edi //源/目标索引寄存器
0031149C lea edi,[ebp-0CCh]
003114A2 mov ecx,33h
003114A7 mov eax,0CCCCCCCCh
003114AC rep stos dword ptr es:[edi]
int temp;
temp = a;
003114AE mov eax,dword ptr [a]
003114B1 mov dword ptr [temp],eax
a = b;
003114B4 mov eax,dword ptr [b]
003114B7 mov dword ptr [a],eax
b = temp;
003114BA mov eax,dword ptr [temp]
003114BD mov dword ptr [b],eax
}
003114C0 pop edi
003114C1 pop esi
003114C2 pop ebx
003114C3 mov esp,ebp
003114C5 pop ebp
003114C6 ret
void SwapByRef(int& a,int& b)
{
00311440 push ebp
00311441 mov ebp,esp
00311443 sub esp,0CCh
00311449 push ebx
0031144A push esi
0031144B push edi
0031144C lea edi,[ebp-0CCh]
00311452 mov ecx,33h
00311457 mov eax,0CCCCCCCCh
0031145C rep stos dword ptr es:[edi]
int temp;
temp = a;
0031145E mov eax,dword ptr [a]
00311461 mov ecx,dword ptr [eax]
00311463 mov dword ptr [temp],ecx
a = b;
00311466 mov eax,dword ptr [a]
00311469 mov ecx,dword ptr [b]
0031146C mov edx,dword ptr [ecx]
0031146E mov dword ptr [eax],edx
b = temp;
00311470 mov eax,dword ptr [b]
00311473 mov ecx,dword ptr [temp]
00311476 mov dword ptr [eax],ecx
}
00311478 pop edi
00311479 pop esi
0031147A pop ebx
0031147B mov esp,ebp
0031147D pop ebp
0031147E ret
void SwapByPointer(int* a, int* b)
{
003113E0 push ebp
003113E1 mov ebp,esp
003113E3 sub esp,0CCh
003113E9 push ebx
003113EA push esi
003113EB push edi
003113EC lea edi,[ebp-0CCh]
003113F2 mov ecx,33h
003113F7 mov eax,0CCCCCCCCh
003113FC rep stos dword ptr es:[edi]
int* temp = NULL;
003113FE mov dword ptr [temp],0
*temp = *a;
00311405 mov eax,dword ptr [temp]
00311408 mov ecx,dword ptr [a]
0031140B mov edx,dword ptr [ecx]
0031140D mov dword ptr [eax],edx
*a = *b;
0031140F mov eax,dword ptr [a]
*a = *b;
00311412 mov ecx,dword ptr [b]
00311415 mov edx,dword ptr [ecx]
00311417 mov dword ptr [eax],edx
*b = *temp;
00311419 mov eax,dword ptr [b]
0031141C mov ecx,dword ptr [temp]
0031141F mov edx,dword ptr [ecx]
00311421 mov dword ptr [eax],edx
}
00311423 pop edi
00311424 pop esi
00311425 pop ebx
00311426 mov esp,ebp
00311428 pop ebp
00311429 ret