RISC-V ISA 中的任何假设会阻止堆栈向上增长而不是向下增长吗?

Sch*_*ter 5 assembly stack-memory riscv stack-pointer

我想知道 ISA 中的任何内容是否会导致堆栈增长(推入增加 sp,弹出减少 sp)性能降低或在其他方面是不可取的?我知道这不是当今工具的工作方式,包括 Linux 和 GCC 端口,但是除了“这将是一项疯狂的工作量”之外,还有什么根本原因吗?

Jen*_*ens 1

只需在微代码中翻转一点即可简单地从 sp 中进行加法而不是减法。

我能想到的根本原因是

  • 惯性。当需要更改每个工具链时为什么要这样做?
  • 安装基地。许多代码可能会假设堆栈的增长方向。你需要一个很好的理由来破坏现有的代码。
  • 复杂。随着堆的分配向更高的地址增长,您是否还想扭转这一局面以保持堆和堆栈向彼此增长?