汇编代码如下所示:

  call next
next:
  popl %eax


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

最佳答案

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


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


最终效果是%eax指向标签“ next”

07-24 09:44
查看更多