【问题标题】:Is rbp/ebp(x86-64) register still used in conventional way?rbp/ebp(x86-64) 寄存器是否仍以传统方式使用?
【发布时间】:2014-11-26 22:24:44
【问题描述】:

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

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

谢谢

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2018-01-21
      • 2015-02-03
      • 2017-05-09
      • 2019-02-12
      • 2014-07-06
      • 2017-01-03
      • 2016-10-01
      • 1970-01-01
      • 2017-04-23
      相关资源
      最近更新 更多