【发布时间】:2014-11-19 11:51:35
【问题描述】:
我对@987654323@ 在汇编中的实际作用感到困惑。 pop 是否将值 PUSHed 最后移动到堆栈上(这意味着如果我们 MOV 在最后一个元素 PUSHed 之后的值不适用)还是只是弹出最后一个值堆栈(因此,适用于MOV 和PUSH),还是弹出堆栈指针指向的值?考虑以下代码:
push $4
mov $5, -4(%esp)
add $4, %esp (esp pointing to an unknown value)
pop %ebp
那么在这段代码中,ebp 中弹出的值是 4、5,还是esp 指向的未知值?
【问题讨论】:
-
相关:What is an assembly-level representation of pushl/popl %esp? - 与
push %esp和push其他任何东西的真实行为相匹配的 asm 等效项。英特尔的伪代码没有反映在这种情况下会发生什么,只有文本描述部分涵盖了它。
标签: assembly x86 stack-memory stack-pointer