_stdcall 调用约定
2009-05-26 11:20
239 查看
_stdcall 调用约定
调用约定(Calling convention):决定函数参数传送时入栈和出栈的顺序,由调用者还是被调用者把参数弹出栈,以及编译器用来识别函数名字的修饰约定。
、__stdcall调用约定相当于16位动态库中经常使用的PASCAL调用约定。在32位的VC++5.0中PASCAL调用约定不再被支持(实际上它已被定义为__stdcall。除了__pascal外,__fortran和__syscall也不被支持),取而代之的是__stdcall调用约定。两者实质上是一致的,即函数的参数自右向左通过栈传递,被调用的函数在返回前清理传送参数的内存栈,但不同的是函数名的修饰部分(关于函数名的修饰部分在后面将详细说明)。
_stdcall是Pascal程序的缺省调用方式,通常用于Win32 Api中,函数采用从右到左的压栈方式,自己在退出时清空堆栈。VC将函数编译后会在函数名前面加上下划线前缀,在函数名后加上"@"和参数的字节数。
调用约定(Calling convention):决定函数参数传送时入栈和出栈的顺序,由调用者还是被调用者把参数弹出栈,以及编译器用来识别函数名字的修饰约定。
、__stdcall调用约定相当于16位动态库中经常使用的PASCAL调用约定。在32位的VC++5.0中PASCAL调用约定不再被支持(实际上它已被定义为__stdcall。除了__pascal外,__fortran和__syscall也不被支持),取而代之的是__stdcall调用约定。两者实质上是一致的,即函数的参数自右向左通过栈传递,被调用的函数在返回前清理传送参数的内存栈,但不同的是函数名的修饰部分(关于函数名的修饰部分在后面将详细说明)。
_stdcall是Pascal程序的缺省调用方式,通常用于Win32 Api中,函数采用从右到左的压栈方式,自己在退出时清空堆栈。VC将函数编译后会在函数名前面加上下划线前缀,在函数名后加上"@"和参数的字节数。
相关文章推荐
- 函数的调用约定——__thiscall,__cdecl,__stdcall
- cdecl、stdcall、fastcall函数调用约定区别
- cdecl和stdcall调用约定的汇编代码对比
- 函数命名规则及调用约定:__stdcall,__cdecl,__fastcall,thiscall,naked call
- cdecl、stdcall、fastcall函数调用约定区别
- 函数命名规则及调用约定(__cdecl,__stdcall,__fastcall)
- cdecl、stdcall、fastcall函数调用约定区别
- cdecl、stdcall、fastcall函数调用约定区别
- __cdecl与 __fastcall与 __stdcall调用约定
- 函数的调用约定(cdecl,stdcall,fastcall,...)
- cdecl、stdcall、fastcall函数调用约定区别
- cdecl, stdcall, pascal,fastcall 都有什么区别,具体是什么调用约定?
- [32位汇编系列]003 汇编中__stdcall 调用约定以及参数传递
- cdecl和stdcall调用约定的汇编代码对比
- __cdecl __stdcall各种调用约定详解
- __cdecl __fastcall与 __stdcall 调用约定
- 调用约定(pascal,fastcall,stdcall,thiscall,cdecl)区别等
- 函数的调用约定(_cdecl,_stdcall,_fastcall,_pascal)
- 调用约定(__stdcall and __cdecl)和修饰名(extern c)
- cdecl、stdcall、fastcall函数调用约定区别