首页
社区
课程
招聘
[原创]常见的几种调用约定
发表于: 2022-2-9 21:37 4018

[原创]常见的几种调用约定

2022-2-9 21:37
4018

常见的几种调用约定:

调用约定 参数压栈顺序 平衡堆栈
__cdecl 从右至左入栈 调用者清理栈
__stdcall 从右至左入栈 自身清理堆栈
__fastcall ECX/EDX传送前两个 自身清理堆栈
剩下 从右至左入栈 未知
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
1int __cdecl Plus(int a, int b)                   
{                   
    return a+b;               
}           
反汇编:
push        2                   
push        1                   
call        @ILT+15(Plus) (00401014)                   
add         esp,8                   
 
 
2int __stdcall Plus(int a, int b)                   
{                   
    return a+b;               
}                   
反汇编                   
push        2                   
push        1                   
call        @ILT+10(Plus) (0040100f)   
函数内部:                   
ret         8                   
 
 
3int __fastcall Plus(int a, int b)                   
{                   
    return a+b;               
}                   
反汇编                   
mov         edx,2                   
mov         ecx,1                   
call        @ILT+0(Plus) (00401005)                                   
函数内部:                                       
ret                            
 
4int __fastcall Plus4(int a, int b,int c,int d)                   
{                   
    return a+b+c+d;               
}                   
反汇编:                   
push        4                   
push        3                   
mov         edx,2                   
mov         ecx,1                   
call        @ILT+5(Plus) (0040100a)                       
函数内部:                   
ret         8                   
1
插入代码
1
插入代码

[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

收藏
免费 0
支持
分享
最新回复 (0)
游客
登录 | 注册 方可回帖
返回
//