| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1136 人关注过本帖
标题:在汇编层面:实参的值是如何传递给形参的?
取消只看楼主 加入收藏
px1983421
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-9-16
结帖率:0
收藏
已结贴  问题点数:20 回复次数:2 
在汇编层面:实参的值是如何传递给形参的?
重提老话题了,不讨论都知道的形参和实参的关系,只讨论,在实际程序运行过程中,当调用一个带参数的函数时,形参的地址被划分后,实参的值是如何被赋给形参的呢?
我在网上查询到的说法是:在PC指针跳转到被调用函数之前,编译器会自动添加代码将所有实参值依次压入栈,而进入被调用函数后,该函数会将参数值依次出栈(逆序),赋值给形参空间。

但是在我工作中用的PIC16系列单片机中,堆栈空间是一定的,不可更改,并且很小,个人感觉如果这样的话,我编写的一些多层调用 ,带很U32参数的系统,将会导致堆栈溢出,但实际上并没有,这是怎么回事呢?

到底实参的值是怎么传递给形参的呢?是不是在嵌入式系统里,不同的处理器对应的编译器处理方式不一样呢?
搜索更多相关主题的帖子: 如何 空间 编译器 网上 
2011-10-12 20:49
px1983421
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-9-16
收藏
得分:0 
重提老话题了,不讨论都知道的形参和实参的关系,只讨论,在实际程序运行过程中,当调用一个带参数的函数时,形参的地址被划分后,实参的值是如何被赋给形参的呢?
我在网上查询到的说法是:在PC指针跳转到被调用函数之前,编译器会自动添加代码将所有实参值依次压入栈,而进入被调用函数后,该函数会将参数值依次出栈(逆序),赋值给形参空间。

但是在我工作中用的PIC16系列单片机中,堆栈空间是一定的,不可更改,并且很小,个人感觉如果这样的话,我编写的一些多层调用 ,带很U32参数的系统,将会导致堆栈溢出,但实际上并没有,这是怎么回事呢?

2011-10-12 20:51
px1983421
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2009-9-16
收藏
得分:0 
明白了,我把程序栈和处理器用来保存PC指针的硬件堆栈给弄混了,谢谢大家
2011-10-13 08:50
快速回复:在汇编层面:实参的值是如何传递给形参的?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016070 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved