汇编代码中的返回地址

Alc*_*ott 3 x86 assembly call

汇编代码如下:

  call next
next:
  popl %eax
Run Code Online (Sandbox Code Playgroud)

我想过call next,返回地址会被推到堆栈上,对吧?但是在上面的代码中,返回地址是什么?

amd*_*mdn 5

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

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

净效应是%eax指向标签"下一步"