相关疑难解决方法(0)

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

我是汇编语言的初学者,并注意到编译器发出的x86代码通常在释放/优化模式下保持帧指针,当它可以使用EBP寄存器时.

我理解为什么帧指针可能使代码更容易调试,并且如果alloca()在函数内调用则可能是必要的.但是,x86只有很少的寄存器,并使用其中两个寄存器来保存堆栈帧的位置,当一个就足够了,对我来说没有意义.为什么即使在优化/发布版本中省略框架指针也是一个坏主意?

performance x86 assembly

87
推荐指数
3
解决办法
5万
查看次数

为什么x86架构使用两个堆栈寄存器(esp; ebp)?

我的问题很简单,为什么x86架构使用两个堆栈寄存器(esp ; ebp)?

堆栈帧的长度已在编译期间确定,然后我认为我们可以只使用一个寄存器(例如esp)来访问堆栈,并维护以前在ebp堆栈中(或在其他内存中的寄存器中)的基址地区,但这将导致更多的性能损失)

可能吗?

x86 assembly x86-64

7
推荐指数
1
解决办法
2306
查看次数

标签 统计

assembly ×2

x86 ×2

performance ×1

x86-64 ×1