汇编代码中的返回地址

时间:2012-07-12 23:34:48

标签: assembly x86 call

汇编代码如下:

  call next
next:
  popl %eax

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

2 个答案:

答案 0 :(得分:5)

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

  1. 调用分支到目标,恰好是下一个顺序指令并推送返回地址,它始终是下一个顺序指令的地址
  2. popl会将堆栈中的返回地址弹出到%eax寄存器
  3. 净效应是%eax指向标签“下一步”

答案 1 :(得分:2)

紧跟call指令后的指令地址。请参阅有关call工作原理的CPU文档。