这个汇编代码做了什么以及为什么使用它?

时间:2013-01-31 01:03:28

标签: assembly att

ATT语法。

我注意到C中的库例程经常使用以下汇编代码片段:

call next
next:
popl %eax
  • %eax存储在这里有什么价值?为什么会弹出?
  • 此代码段的目的是什么?

2 个答案:

答案 0 :(得分:1)

它为您提供程序计数器(PC)的当前值。也就是说,您将获得正在执行的当前指令的地址。

这是一篇有趣的文章,讨论使用该代码片段与使用C代码:http://blogs.msdn.com/b/oldnewthing/archive/2004/12/16/317157.aspx

答案 1 :(得分:1)

  

此指令序列后%eax的值是多少?

     

呼叫   下一个

     

next:popl%eax

     

无论下一个地址是什么

     

(popl指令所在的内存地址)注意:这不是   PC,但它与它有关

     

- PC是要执行的下一条指令的地址; %eax现在   具有最近执行的指令(popl)的地址

See