Skip to content

Latest commit

 

History

History
9 lines (8 loc) · 1.38 KB

讲讲函数调用的过程.md

File metadata and controls

9 lines (8 loc) · 1.38 KB

在C++中,函数的调用过程主要包括以下几个步骤:

  1. 压入返回地址:当一个函数被调用时,程序会先将当前函数的返回地址压入栈中。这个返回地址指向调用该函数之后需要返回到的下一个指令地址。
  2. 压入参数:接下来,函数的参数按照从右到左的顺序被压入栈中。这些参数将作为函数的局部变量使用。
  3. 保存寄存器状态:如果函数需要使用一些寄存器,那么在执行函数之前,需要先将这些寄存器的值保存在栈中,以防止它们被修改。
  4. 跳转到函数体:现在,程序跳转到被调用的函数体开始执行。在执行函数时,函数的局部变量以及其他需要用到的内存空间也会被分配在栈上。
  5. 执行函数体:函数体被执行并返回结果。在函数执行过程中,程序会按照语句的顺序依次执行每一条语句,并可能调用其他的子函数。
  6. 弹出栈中的内容:当函数执行完毕之后,会将所有被压入栈中的内容依次弹出。这个过程包括弹出所有的局部变量、恢复寄存器状态、弹出所有的参数以及返回地址。
  7. 返回到调用者:最后,程序跳转回到调用该函数的地方,并将函数的返回值传递给调用者。这时候,程序会从返回地址指针中读取下一个指令地址,并开始执行下一个指令。