| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 817 人关注过本帖
标题:关于函数调用机制!
只看楼主 加入收藏
crazychzy
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2007-12-26
收藏
 问题点数:0 回复次数:1 
关于函数调用机制!
请问各位大侠,在一个没有参数传递的函数调用中,在进入函数入口点之前,堆栈里应该只有返回地址吧?CPU的上下文是否要保护进堆栈?
另外,在参数传递过程中,编译器如何知道有几个参数呢?不定参数的函数调用又是怎么编译呢?
多谢!
搜索更多相关主题的帖子: 函数 堆栈 机制 参数 CPU 
2007-12-26 14:58
灭火的风
Rank: 2
来 自:杭州
等 级:论坛游民
帖 子:161
专家分:10
注 册:2006-6-15
收藏
得分:0 
出了下一条机器指令的地址之外还有一些,比如一些通用寄存器(ax,cx,dx)和段寄存器(段寄存器我记不请到底要不要放进栈里了),总之还是要存很多东西的,但是还有一些,比如bx寄存器则是不压栈的,这部分是留给函数代码在使用前去保存的。所以CPU的上下文是要保存的。

不定参数一般是不能知道他们的数量的,除非像int main(int argc char *argv[])这样,用一个变量来说明,如果是int printf(char *fmt, ...);这样的函数,要读后面几个参数是有前面的变量fmt中的内容决定的,在函数里根据fmt的内容去判断的。
2007-12-26 15:16
快速回复:关于函数调用机制!
数据加载中...
 
   



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

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