我对Intel IA-32堆栈有几个问题。具体做法是:
push
一个值进入堆栈时,堆栈指针减少了推送值(%esp - size
)的大小,并且该值存储在旧值{{1} }。%esp
的情况下从堆栈中读取值,我需要增加堆栈指针(pop
)。我的上述断言是否正确?提前谢谢。
答案 0 :(得分:1)
%esp
值写入。(%esp)
读回最近的值。您需要添加到%esp
才能访问旧项目。答案 1 :(得分:1)
根据the IA-32 specification,PUSH减少堆栈指针,然后将值存储在新%esp
位置。因此,在没有pop
的情况下读取推送值只会读取当前值%esp
指向的值。