__cdecl
C++
void fun(int a) //默认__cdecl
{
cout << a;
}
int main()
{
fun(3);
system("pause");
return 0;
}
反汇编:
void fun(int a)
{
00D713A0 push ebp
00D713A1 mov ebp,esp
00D713A3 sub esp,0C0h
00D713A9 push ebx
00D713AA push esi
00D713AB push edi
00D713AC lea edi,[ebp-0C0h]
00D713B2 mov ecx,30h
00D713B7 mov eax,0CCCCCCCCh
00D713BC rep stos dword ptr es:[edi]
cout << a;
00D713BE mov esi,esp
00D713C0 mov eax,dword ptr [a]
00D713C3 push eax
00D713C4 mov ecx,dword ptr [__imp_std::cout (0D78294h)]
00D713CA call dword ptr [__imp_std::basic_ostream<char,std::char_traits<char> >::operator<< (0D78290h)]
00D713D0 cmp esi,esp
00D713D2 call @ILT+305(__RTC_CheckEsp) (0D71136h)
}
00D713D7 pop edi
00D713D8 pop esi
00D713D9 pop ebx
00D713DA add esp,0C0h
00D713E0 cmp ebp,esp
00D713E2 call @ILT+305(__RTC_CheckEsp) (0D71136h)
00D713E7 mov esp,ebp
00D713E9 pop ebp
00D713EA ret
//main中调用fun
fun(3);
0005141E push 3
00051420 call fun (511D1h)
00051425 add esp,4
__cdecl :由调用者清堆栈
_