rbp / ebp(x86-64)寄存器是否仍以常规方式使用?

时间:2014-10-01 23:21:31

标签: linux operating-system x86 kernel x86-64

我最近基于x86-64架构编写了一个小内核。在处理一些用户空间代码时,我意识到我几乎没有使用rbp。然后我抬头看了一些其他的东西,发现编译器这些天变得更聪明了,他们真的不再使用rbp了。 (我可能在这里错了。)

我想知道在许多情况下是否不再需要常规使用rbp / epb,或者我错了。如果不需要这种用法,那么它可以像通用寄存器一样使用吗?

由于

1 个答案:

答案 0 :(得分:0)

如果你的堆栈帧中有可变长度数组,则只需 (记录数组长度需要更多内存和更多计算)。它不再需要展开,因为现在有了元数据。

如果您手写整个装配功能,但仍然有用,但是谁这样做?装配应仅用作胶水以跳入C(或其他)功能。