为什么我们需要退货地址?

N. *_*cA. 1 assembly stack

在调用堆栈上,我们有一个帧指针,它为我们提供了过程参数的位置和指向前一帧的指针的地址。我们还有一个退货地址。为什么需要返回地址?我们是否可以不只是跟随帧指针返回堆栈,一边走一边弹出堆栈帧?返回地址只是一种优化吗?

Thi*_*ilo 6

返回地址不指向前一个堆栈帧,它指向调用方法中下一条指令的代码段。