免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12345678
最近访问板块 发新帖
楼主: superwujc
打印 上一主题 下一主题

[C] Linux下c函数参数的入栈顺序? [复制链接]

论坛徽章:
4
天秤座
日期:2013-10-18 13:58:33金牛座
日期:2013-11-28 16:17:01辰龙
日期:2014-01-14 09:54:32戌狗
日期:2014-01-24 09:23:27
71 [报告]
发表于 2013-01-29 12:21 |只看该作者
为表道歉诚心,贴上x86-64abi文档。如果想了解复杂性,可以直奔23页的例子。

对于变参,并没有详尽的描述,可能所有变参都是memory型?我也没搞懂,不过我会持续跟踪这个问题,如有进展,会直接更新此楼。

x86-abi_20100717.pdf

504.24 KB, 下载次数: 12

System V Application Binary Interface AMD64 Architecture Processor Supplement

论坛徽章:
4
天秤座
日期:2013-10-18 13:58:33金牛座
日期:2013-11-28 16:17:01辰龙
日期:2014-01-14 09:54:32戌狗
日期:2014-01-24 09:23:27
72 [报告]
发表于 2013-01-29 12:23 |只看该作者
另外,该文档并非最终版本,最终版本应该在:http://www.x86-64.org/

不过这个链接现在链接不上,不确定是否是GFW问题。如果确是gfw问题,我就顺便问候一下搞gfw的人的户口本吧。

论坛徽章:
4
天秤座
日期:2013-10-18 13:58:33金牛座
日期:2013-11-28 16:17:01辰龙
日期:2014-01-14 09:54:32戌狗
日期:2014-01-24 09:23:27
73 [报告]
发表于 2013-01-29 12:27 |只看该作者
变参部分从50页开始,刚才没看到。

论坛徽章:
24
金牛座
日期:2013-10-18 21:35:56综合交流区版块每日发帖之星
日期:2015-08-15 06:20:00综合交流区版块每日发帖之星
日期:2015-09-30 06:20:00综合交流区版块每日发帖之星
日期:2015-10-16 06:20:03每日论坛发贴之星
日期:2015-10-16 06:20:03综合交流区版块每日发帖之星
日期:2015-10-24 06:20:00IT运维版块每日发帖之星
日期:2016-01-06 06:20:0015-16赛季CBA联赛之天津
日期:2016-02-25 16:28:04综合交流区版块每日发帖之星
日期:2016-06-12 06:20:00每日论坛发贴之星
日期:2016-06-12 06:20:00综合交流区版块每日发帖之星
日期:2016-06-13 06:20:00综合交流区版块每日发帖之星
日期:2015-06-22 22:20:00
74 [报告]
发表于 2013-01-29 13:38 |只看该作者
superwujc 发表于 2013-01-29 12:10
回复 69# 一介村夫

终于理解了楼上的意思

这是大小端的问题。因CPU而异。

论坛徽章:
1
巨蟹座
日期:2014-03-18 23:44:30
75 [报告]
发表于 2013-01-29 13:57 |只看该作者

for rapid executing and low memeory occupy. by the way
i think "APUE 上有说,设计变参的函数,只能从左到右压栈" is 从右到左


抱歉,经查证,确实变参用的是 从右到左 的顺序压栈,调用者清理

论坛徽章:
0
76 [报告]
发表于 2013-01-30 09:28 |只看该作者
Application binary interface
回复 7# lxyscls_cu


   

论坛徽章:
0
77 [报告]
发表于 2015-05-10 18:35 |只看该作者
给个压栈顺序检查方法:

int main ()
{
    int A [] = { 1, 2, 3, 4,} ;
    int *p = A;
    printf("%d %d", *p++, *p++);
}

1, 2
2, 1  
分别对应上面的从右到左或相反

论坛徽章:
59
2015年亚洲杯之约旦
日期:2015-01-27 21:27:392015年亚洲杯之日本
日期:2015-02-06 22:09:41拜羊年徽章
日期:2015-03-03 16:15:432015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015元宵节徽章
日期:2015-03-06 15:50:392015年亚洲杯之阿联酋
日期:2015-03-19 17:39:302015年亚洲杯之中国
日期:2015-03-23 18:52:23巳蛇
日期:2014-12-14 22:44:03双子座
日期:2014-12-10 21:39:16处女座
日期:2014-12-02 08:03:17天蝎座
日期:2014-07-21 19:08:47
78 [报告]
发表于 2015-05-10 19:06 |只看该作者
回复 63# zylthinking


    内部使用的东西不用遵守ABI

论坛徽章:
14
水瓶座
日期:2014-06-10 09:51:0215-16赛季CBA联赛之江苏
日期:2017-11-27 11:42:3515-16赛季CBA联赛之八一
日期:2017-04-12 14:26:2815-16赛季CBA联赛之吉林
日期:2016-08-20 10:43:1215-16赛季CBA联赛之广夏
日期:2016-06-23 09:53:58程序设计版块每日发帖之星
日期:2016-02-11 06:20:00程序设计版块每日发帖之星
日期:2016-02-09 06:20:0015-16赛季CBA联赛之上海
日期:2015-12-25 16:40:3515-16赛季CBA联赛之广夏
日期:2015-12-22 09:39:36程序设计版块每日发帖之星
日期:2015-08-24 06:20:002015亚冠之德黑兰石油
日期:2015-08-07 09:57:302015年辞旧岁徽章
日期:2015-03-03 16:54:15
79 [报告]
发表于 2015-05-12 10:01 |只看该作者
挖坟的太可耻了

论坛徽章:
0
80 [报告]
发表于 2015-06-02 19:05 |只看该作者
liuiang 发表于 2013-01-28 15:00
貌似通过寄存器传递的那部分,是从左向右的~~~~~~~~~~

寄存器用完了,不得不通过memory传的话,就是从右 ...

正解,
64位的寄存器很多
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP