函数调用处反汇编代码如下: ;Add(1,2); push 2 ;参数从右到左入栈,先压入2 push 1 ;压入1 call @ILT+0(Add) (00401005) ;调用函数实现 add esp,8 ;由函数调用清栈 2、__stdcall __stdcall调用约定用于调用Win32 API函数。采用__stdcal约定时,函数参数按照从右到左的顺序入栈,被调用的函数在返回前清理传送参数的栈,函数参数个数固定。由于函数体本身知道传进来的参数个数,因此被调用的函数可以在返回前用一条ret n指令直接清理传递参数的堆栈。__stdcall可以写成_stdcall。 还是那个例子,将__cdecl约定换成__stdcall: int __stdcall Add(int a, int b) { return (a + b); } 函数调用处反汇编代码: ; Add(1,2); push 2 ;参数从右到左入栈,先压入2 push 1 ;压入1 call @ILT+10(Add) (0040100f) ;调用函数实现 函数实现部分的反汇编代码: ;int __stdcall Add(int a, int b) push ebp mov ebp,esp |
正在阅读:DLL中调用约定和名称修饰(一)DLL中调用约定和名称修饰(一)
2004-03-04 10:28
出处:CSDN
责任编辑:linjixiong
键盘也能翻页,试试“← →”键
相关文章
怎么查看进程正在调用哪些DLL文件
Win7系统取消dll文件关联的方法
win7系统玩游戏提示XINPUT1-3.dll丢失怎么处理
Win7笔记本系统如何添加注册dll和反注册dl
winxp系统开机dLL文件出错提示的具体处理步骤
360se.exe应用程序出错 计算机中丢失demaxiya.dll解决方法
pgort100.dll丢失 QQ提示pgort100.dll报错解决方法
msvcr100.dll丢失 QQ提示msvcr100.dll报错解决方法
win7 64位系统无法运行程序提示找不到tbb_debug.dll
win7旗舰版64位系统开机提示找不到comctl32.dll