c/c++函数调用约定
1、函数调用约定一般规定如下三个方面:
1)函数参数的传递顺序和方式;
2)栈的维护;
3)名字修饰的策略。
2、常见的函数调用约定方式:
调用约定 | 出栈方式 | 参数传递 | 名字修饰 |
---|---|---|---|
cdecl | 函数调用方 | 从右至左的顺序压参数入栈 | 下划线+函数名 |
stdcall | 函数本身 | 从右至左的顺序压参数入栈 | 下划线+函数名+@+参数的字节数,如函数 int func(int a, double b)的修饰名是_func@12 |
fastcall | 函数本身 | 头两个(4字节)类型或占更少字节的参数被放入寄存器,其它剩下的参数按从右至左的顺序压参数入栈 | @+函数名+@+参数的字节数 |
pascal | 函数本身 | 从左至右的顺序压参数入栈 | 较为复杂,参见pascal文档 |
标签:顺序,入栈,约定,c++,参数,函数调用,函数 来源: https://www.cnblogs.com/code-fun/p/15408148.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。