下面列举了一些常见的编译器的调用约定
VC6:
调用约定 堆栈清除 参数传递
__cdecl 调用者 从右到左,通过堆栈传递
__stdcall 函数体 从右到左,通过堆栈传递
__fastcall 函数体 从右到左,优先使用寄存器(ECX,EDX),然后使用堆栈
thiscall 函数体 this指针默认通过ECX传递,其他参数从右到左入栈
正常情况下,我们看到的压栈都是从右向左,如:
void main()
{
int x = 2;
printf("%d",++x);
printf("%d",x);
}
该

本文探讨了C语言中不同调用约定下的参数传递方式,以VC6为例,详细分析了__cdecl、__stdcall、__fastcall和thiscall四种调用约定。通过实例展示了参数压栈从右到左的过程,并且以3个参数的函数调用为例,展示了VS2005环境下参数压栈的具体顺序:eax, ecx, edx。"
127768136,15718730,Java实现中医保健系统设计与开发详解,"['Java', '开发语言', '数据库设计', 'B/S架构', '中医保健系统']
最低0.47元/天 解锁文章
8326

被折叠的 条评论
为什么被折叠?



