3

汇编代码如下:

  call next
next:
  popl %eax

我想之后call next,返回地址将被压入堆栈,对吗?但是在上面的代码中,返回地址是什么?

4

2 回答 2

5

在该代码执行后 %eax 将具有标签“next”的地址

  1. 调用分支到恰好是下一条顺序指令的目标并推送返回地址,该地址始终是下一条顺序指令的地址
  2. popl 会将返回地址从堆栈中弹出到 %eax 寄存器中

最终效果是 %eax 指向标签“下一个”

于 2012-07-13T00:57:46.523 回答
2

它是紧跟在指令后面的call指令的地址。请参阅您的 CPU 文档以了解其call工作原理。

于 2012-07-13T00:02:46.433 回答