0

代码如下

    call next
next:
    popl %eax
  1. 寄存器 %eax 设置为什么值?
  2. 解释为什么这个调用没有匹配的 ret 指令?
  3. 这个代码片段有什么有用的用途?

书中的答案如下。我不明白。这部分代码有更详细的解释吗?

  1. %eax 设置为 popl 指令的地址。
  2. 这不是一个真正的子程序调用,因为控制遵循与指令相同的顺序,并且返回地址从堆栈中弹出。
  3. 这是 IA32 中将程序计数器的值放入整数寄存器的唯一方法。
4

0 回答 0