+ -
当前位置:首页 → 问答吧 → esp和ebp的关系: 局部变量的地址以esp作为起点开始计算就行了,为什么还要用到ebp作为起点来计算局部变量的地址?

esp和ebp的关系: 局部变量的地址以esp作为起点开始计算就行了,为什么还要用到ebp作为起点来计算局部变量的地址?

时间:2011-02-28

来源:互联网

感觉C语言生成的代码里面,局部变量的寻址大量用到了ebp。但是我感觉esp就足够了啊(esp-4, esp-10这样的)。

ebp是必须用到的么? 这个是Intel的强制规定还是微软VC编译器实现的时候它自己的一种做法?

thanks!

作者: sadriu   发布时间: 2011-02-28

ebp不一定用,有的编译器可以通过命令行参数去掉对ebp的栈帧使用,而是作为一般的通用寄存器使用
64位一般就不用ebp来局部变量寻址

作者: Lactoferrin   发布时间: 2011-02-28

引用 1 楼 lactoferrin 的回复:

ebp不一定用,有的编译器可以通过命令行参数去掉对ebp的栈帧使用,而是作为一般的通用寄存器使用
64位一般就不用ebp来局部变量寻址

打错了
64位一般就不用rbp来局部变量寻址

作者: Lactoferrin   发布时间: 2011-02-28

SP置顶栈顶
 BP用来寻址取栈中数据

作者: znxllyuan   发布时间: 2011-02-28

如果没有堆栈操作,esp可以啊

作者: wang0635   发布时间: 2011-02-28

热门下载

更多