编程论坛
注册
登录
编程论坛
→
操作系统内核开发
IA32中pushl %esp 和一般的 pushl %ebp 有什么区别吗?
wtyj112
发布于 2010-05-11 23:05, 4261 次点击
问题一、IA32中pushl %esp 栈指针是怎么做的?
问题二、IA32pushl %ebp 是先栈指针--再入栈,还是先入栈再指针--?
1 回复
#2
chengstone
2010-05-14 09:35
push语句算是一个元语(元操作),期间不能被打断,作为CPU的一条指令,它跟实际的处理器指令体系有关系
现在大多的教程对于PUSH的解释都是先移动栈指针,再数据入栈
也有的处理器是先进行数据入栈然后再移动指针的, 而且有的栈是栈向上生长,有的是栈向下生长,所以要根据具体的实际情况来定
根据我的记忆,通常把PUSH操作看成是先移动栈指针,再数据入栈
pushl %esp 和 pushl %ebp的区别:
pushl %ebp这个我就不解释了,pushl %esp这句其实就是push old_esp,入栈以后,得到了new_esp
1