我最近基于x86-64架构编写了一个小内核。在处理一些用户空间代码时,我意识到我几乎没有使用rbp。然后我抬头看了一些其他的东西,发现编译器这些天变得更聪明了,他们真的不再使用rbp了。 (我可能在这里错了。)
我想知道在许多情况下是否不再需要常规使用rbp / epb,或者我错了。如果不需要这种用法,那么它可以像通用寄存器一样使用吗?
由于
答案 0 :(得分:0)
如果你的堆栈帧中有可变长度数组,则只需 (记录数组长度需要更多内存和更多计算)。它不再需要展开,因为现在有了元数据。
如果您手写整个装配功能,但仍然有用,但是谁这样做?装配应仅用作胶水以跳入C(或其他)功能。