分析在程序中函数调用时,堆栈和PC都是如何完成实现的,写出详细过程.谢谢了高手帮帮忙很急的

来源:百度知道 编辑:UC知道 时间:2024/05/05 11:45:11
谢谢如果好还追加噢
在线等阿拜托了

拷贝来的。。。
函数的一般调用过程
1。指令指针中的地址加1,指向函数调用后的下一条指令。这个地址随后被放入堆栈,它将作为函数返回时的返回地址。

2。在堆栈中为你所声明的返回值类型开辟空间。如果系统的整数规定为四个字节,则当函数返回值声明为整数时,堆栈再增加四个字节,但在这四个字节中并不放入任何值。

3。被调函数的首地址装入指令指针。

4。当前的堆栈栈顶被记录下来并存入一个称为栈帧的特殊指针中,从现在开始到函数返回之前加入堆栈的任何数据都将被视为函数的局部变量。

5。函数将所有形参放入堆栈。

6。开始执行指令指针中的指令。

7。局部变量按其定义的方式压入堆栈

当函数准备返回时,返回值放入2所开辟的内存中,随后堆栈指针指向栈帧指针,从而弹出被调函数的所有局部变量。返回值被弹出堆栈并赋给函数调用本身的值,而第一步中指针接着弹出,赋给指令指针,函数继续执行。