-
-
[原创]常见的几种调用约定
-
发表于: 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 | 1 、 int __cdecl Plus( int a, int b) { return a + b; } 反汇编: push 2 push 1 call @ILT + 15 (Plus) ( 00401014 ) add esp, 8 2 、 int __stdcall Plus( int a, int b) { return a + b; } 反汇编 push 2 push 1 call @ILT + 10 (Plus) ( 0040100f ) 函数内部: ret 8 3 、 int __fastcall Plus( int a, int b) { return a + b; } 反汇编 mov edx, 2 mov ecx, 1 call @ILT + 0 (Plus) ( 00401005 ) 函数内部: ret 4 、 int __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 | 插入代码 |
赞赏
他的文章
- [原创]win32中通过调用文件资源管理器进行获取文件路径 4589
- [原创]Win32中打印信息 4242
- [原创]线程之内核对象与事件操作 4066
- [原创]常见的几种调用约定 4019
- 硬件断点过CRC(日常笔记分享) 7613
看原图
赞赏
雪币:
留言: