【C++】函数调用约定、函数返回值的返回方式

C++函数调用约定有4种:

    1._cdecl C标准调用约定,也是默认调用约定

    2._stdcall Windows下的标准调用约定

    3._fastcall 快速调用约定

    4._thiscall 类成员方法的调用约定

_cdecl调用约定生成的函数符号:?函数名@@YAHHH@Z

    YA代表_cdecl函数约定,YG代表_stdcall函数约定,YI代表_fastcall函数约定。

    函数调用约定后的第一个参数代表函数返回值类型,第二个参数代表第一个形参类型,第三个参数代表第二个形参类型。其中H代表int,_N代表bool,N代表double。

    最后的@Z代表有形参。

函数调用约定约定了什么?

    1.函数符号的生成;

    2.实参的入栈顺序(以上四种调用约定均是从右向左入栈);

    3.形参的开辟和清理方式

      _cdecl 调用方开辟内存,调用方清理

      _stdcall 调用方开辟内存,被调用方清理

      _fastcall 最多使用2个寄存器带入实参,第3个参数起,调用方开辟内存,被调用方清理

 

函数返回值的返回方式

    1.返回值如果>0个字节并且<=4个字节则由eax寄存器带回;

    2.返回值如果>4个字节并且<=8个字节则由2个寄存器eax、edx带回;

    3.返回值如果>8个字节则由临时量带回。

    寄存器:eax、ebx、ecx、edx

    ebp:栈底指针寄存器

    esp:栈顶指针寄存器

    PC:下一行指令寄存器

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值