标题:关于函数调用机制!
只看楼主
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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-194402-1-1.html




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

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