rbp/ebp(x86-64)寄存器是否仍以传统方式使用



我最近一直在编写一个基于x86-64体系结构的小型内核。在处理一些用户空间代码时,我意识到我实际上并没有使用rbp。然后我查阅了其他一些东西,发现编译器现在越来越聪明了,他们真的不再使用rbp了。(我可能错了。)

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

感谢

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

如果您手工编写整个汇编函数,它仍然很有用,但谁会这样做呢?程序集只能用作跳转到C(或其他)函数的粘合剂。

最新更新