2012-07-12 98 views
3

汇编代码的返回地址是这样的:在汇编代码中

call next 
next: 
    popl %eax 

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

回答

2

它立即call指令的下一条指令的地址。有关call的工作方式,请参阅CPU文档。

+0

那么,紧随'call',在这种情况下指令,是'popl等%eax',对不对?那么返回地址将是'popl'的地址,不是吗? – Alcott 2012-07-14 00:41:13

+0

正确。 – 2012-07-14 01:18:03

5

代码后,执行%EAX将有标签的地址“下一个”

  1. 呼叫转移到这恰巧是下一顺序指令以及将返回地址,这始终是地址的目标下一顺序指令的
  2. 的popl等会弹出从栈到%eax中返回地址寄存器

的净效应%EAX指向标签“下一个”