我怎么知道我最后的指示

How i know the last instruction i were

本文关键字:指示 最后的 我怎么知道      更新时间:2023-10-16
int testFun(int A)
{
return A+1;
}
int main()
{
int x=0;
int y= testFun(x)
cout<<y;
}

众所周知,堆栈保存局部变量,这意味着当我在主函数中时,堆栈有变量(x 和 y(,当我调用函数 (testFun( 时,堆栈有变量 (A( 当我从(testFun(返回时,堆栈弹出最后一帧 但是这里的问题是,当我从(testFun(返回时,它如何在调用(testFun(之前知道它在主函数中的最后一个位置

当我从(testFun(返回时,它如何在调用(testFun(之前知道它在主函数中的最后一个位置

编译器分析代码并生成在 CPU 上运行的计算机指令。函数调用生成CALL指令。当函数退出时,RET指令用于返回给调用方。

CALL指令将跟随CALL本身的指令的地址推送到调用堆栈上,然后跳转到指定函数的起始地址。

RET指令从调用堆栈中弹出该地址,然后跳转到指定的地址。