为什么pop会在程序集中使用参数?

Mas*_*ask 7 x86 assembly stack callstack arguments

popl   %ebp
Run Code Online (Sandbox Code Playgroud)

这似乎%ebp是不必要的,因为pop堆栈的操作不需要参数.

它为什么有意义?

jsc*_*ier 9

来自http://www.cs.virginia.edu/~evans/cs216/guides/x86.html

pop - Pop堆栈

pop指令将4字节数据元素从硬件支持的堆栈顶部移除到指定的操作数(即寄存器或存储器位置).它首先将位于存储单元[SP]的4个字节移动到指定的寄存器或存储单元中,然后将SP递增4.

语法
pop <reg32>
pop <mem>


pop edi 示例 - 将堆栈的顶部元素弹出到EDI中.
pop [ebx] - 从位置EBX开始的四个字节将堆栈的顶部元素弹出到内存中.

另一个很好的参考是http://en.wikibooks.org/wiki/X86_Assembly,它以PDF格式提供.


And*_*rey 6

此参数设置目标.