EBP帧指针寄存器的用途是什么?

您所在的位置:网站首页 ebp寄存器属于什么架构 EBP帧指针寄存器的用途是什么?

EBP帧指针寄存器的用途是什么?

2024-07-05 18:15| 来源: 网络整理| 查看: 265

帧指针是一个引用指针,允许调试器通过单个常量偏移量知道局部变量或参数的位置。虽然ESP的值在执行过程中会发生变化,但EBP保持不变,因此可以在相同的偏移量下达到相同的变量(例如,第一个参数将始终位于EBP + 8,而ESP偏移量可能会发生显着变化,因为您将推动/弹出的东西)

为什么编译器不丢弃帧指针?因为使用帧指针,调试器可以确定局部变量和参数在哪里使用符号表,因为它们保证与EBP保持一个恒定的偏移量。否则,没有一种简单的方法可以确定局部变量在代码中的任何位置。

正如Greg所提到的,它还有助于堆栈展开调试器,因为EBP提供了堆栈帧的反向链接列表,因此让调试器能够计算出函数的堆栈帧(局部变量+参数)的大小。

大多数编译器提供了省略帧指针的选项,尽管它使调试变得非常困难。永远不要在全局使用该选项,即使在发布代码中也是如此。您不知道何时需要调试用户的崩溃。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3