注册 登录
编程论坛 操作系统内核开发

IA32中pushl %esp 和一般的 pushl %ebp 有什么区别吗?

wtyj112 发布于 2010-05-11 23:05, 4261 次点击
问题一、IA32中pushl %esp 栈指针是怎么做的?
问题二、IA32pushl %ebp 是先栈指针--再入栈,还是先入栈再指针--?
1 回复
#2
chengstone2010-05-14 09:35
push语句算是一个元语(元操作),期间不能被打断,作为CPU的一条指令,它跟实际的处理器指令体系有关系

现在大多的教程对于PUSH的解释都是先移动栈指针,再数据入栈
也有的处理器是先进行数据入栈然后再移动指针的,  而且有的栈是栈向上生长,有的是栈向下生长,所以要根据具体的实际情况来定

根据我的记忆,通常把PUSH操作看成是先移动栈指针,再数据入栈   

pushl %esp 和 pushl %ebp的区别:
pushl %ebp这个我就不解释了,pushl %esp这句其实就是push old_esp,入栈以后,得到了new_esp
1