| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付学习型 ASP/PHP/ASP.NET 主机 30元/年
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY 
共有 328 人关注过本帖
标题:关于函数调用机制!
收藏  订阅  推荐  打印 
crazychzy
Rank: 1
等级:新手上路
帖子:2
积分:128
注册:2007-12-26
关于函数调用机制!

请问各位大侠,在一个没有参数传递的函数调用中,在进入函数入口点之前,堆栈里应该只有返回地址吧?CPU的上下文是否要保护进堆栈?
另外,在参数传递过程中,编译器如何知道有几个参数呢?不定参数的函数调用又是怎么编译呢?
多谢!
搜索更多相关主题的帖子: 函数  堆栈  机制  参数  CPU  
2007-12-26 14:58
灭火的风
Rank: 2
来自:杭州
等级:注册会员
帖子:150
积分:1714
注册:2006-6-15

出了下一条机器指令的地址之外还有一些,比如一些通用寄存器(ax,cx,dx)和段寄存器(段寄存器我记不请到底要不要放进栈里了),总之还是要存很多东西的,但是还有一些,比如bx寄存器则是不压栈的,这部分是留给函数代码在使用前去保存的。所以CPU的上下文是要保存的。

不定参数一般是不能知道他们的数量的,除非像int main(int argc char *argv[])这样,用一个变量来说明,如果是int printf(char *fmt, ...);这样的函数,要读后面几个参数是有前面的变量fmt中的内容决定的,在函数里根据fmt的内容去判断的。
2007-12-26 15:16
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.046572 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved