#include <stdio.h>
#include <stdlib.h>
//通过栈传入值的话
void _fastcall funcFast(int a, int b)
{
001C1B2F pop ecx
001C1B30 mov dword ptr [b],edx
001C1B33 mov dword ptr [a],ecx
printf("%d", a+b);
001C1B36 mov eax,dword ptr [a]
001C1B39 add eax,dword ptr [b]
001C1B3C mov esi,esp
001C1B3E push eax
001C1B3F push 1CE988h
001C1B44 call dword ptr ds:[1D2470h]
001C1B4A add esp,8
001C1B4D cmp esi,esp
001C1B4F call __RTC_CheckEsp (01C13CFh)
}
001C1B54 pop edi
001C1B55 pop esi
001C1B56 pop ebx
001C1B57 add esp,0D8h
001C1B5D cmp ebp,esp
001C1B5F call __RTC_CheckEsp (01C13CFh)
001C1B64 mov esp,ebp
001C1B66 pop ebp
001C1B67 ret
001C1B68 int 3
。。。。。
001C1B7F int 3
void _cdecl funccde(int a,int b)
{
001C1B80 push ebp //栈帧已经变化,esp指向最高,跟随压入的在动
001C1B81 mov ebp,esp
001C1B83 sub esp,0C0h
001C1B89 push ebx
001C1B8A push esi //这三个值的压入是在esp基础上的压入
001C1B8B push edi //edi目的寄存器,esi源寄存器,用于大块数据的移动
001C1B8C lea edi,[ebp-0C0h]
001C1B92 mov ecx,30h
001C1B97 mov eax,0CCCCCCCCh
001C1B9C rep stos dword ptr es:[edi]
printf("%d",a-b);
001C1B9E mov eax,dword ptr [a]
001C1BA1 sub eax,dword ptr [b]
001C1BA4 mov esi,esp
001C1BA6 push eax
001C1BA7 push 1CE988h
001C1BAC call dword ptr ds:[1D2470h]
001C1BB2 add esp,8
001C1BB5 cmp esi,esp
001C1BB7 call __RTC_CheckEsp (01C13CFh)
}
001C1BBC pop edi //cdelc自己进行栈帧的回退
001C1BBD pop esi //通过堆栈进行传值
001C1BBE pop ebx
001C1BBF add esp,0C0h //此处也有增加
001C1BC5 cmp ebp,esp
001C1BC7 call __RTC_CheckEsp (01C13CFh)
001C1BCC mov esp,ebp
001C1BCE pop ebp
001C1BCF ret //没有进行平衡
001C1BD0 int 3
。。。
--- e:\c_study\算法\test\test\c.c ------------------------------------------------
void _stdcall funcstd(int a, int b)
{
001C1BF0 push ebp
001C1BF1 mov ebp,esp
001C1BF3 sub esp,0C0h
001C1BF9 push ebx
001C1BFA push esi
001C1BFB push edi
001C1BFC lea edi,[ebp-0C0h]
001C1C02 mov ecx,30h
001C1C07 mov eax,0CCCCCCCCh
001C1C0C rep stos dword ptr es:[edi]
printf("%d", a*b);
001C1C0E mov eax,dword ptr [a]
001C1C11 imul eax,dword ptr [b]
001C1C15 mov esi,esp
001C1C17 push eax
001C1C18 push 1CE988h
001C1C1D call dword ptr ds:[1D2470h]
001C1C23 add esp,8
001C1C26 cmp esi,esp
001C1C28 call __RTC_CheckEsp (01C13CFh)
}
001C1C2D p
函数调用方式
最新推荐文章于 2022-09-25 16:56:54 发布