C/C++函数调用约定
调用方式 参数 栈恢复
__fastcall ecx,edx,esp n
__stdcall esp 0
__cdecl esp n
__stdcall(class) ecx,esp n
__cdecl(class) ecx,esp 0
__fastcall(class) ecx,edx,esp n
以上为VS2010, 实际程序有些特殊约定方式(其他编译器, 或优化),
如参数传递使用ecx,edx,esp, 但是栈恢复没有,
如果需要定义该种类的函数指针或Hook之类的只能用汇编方式
如
__declspec(naked) int __fastcall Hook_SpdySessionDelStm(SpdySession *_ecx, int status, SpdyStream *stream)
{
__asm mov eax,[esp+4];
__asm pushad;
__asm push eax;
__asm push edx;
__asm push ecx;
__asm call OnSpdySessionDelStm;
__asm popad;
__asm jmp Real_SpdySessionDelStm;
}
原文链接: https://www.cnblogs.com/zzz3265/p/15763668.html
欢迎关注
微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍
原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/183344
非原创文章文中已经注明原地址,如有侵权,联系删除
关注公众号【高性能架构探索】,第一时间获取最新文章
转载文章受原作者版权保护。转载请注明原作者出处!