gpt4 book ai didi

stack - RISC 与 CISC 堆栈

转载 作者:行者123 更新时间:2023-12-04 23:27:00 33 4
gpt4 key购买 nike

这是《汇编语言简介》一书中关于RISC(与CISC)的引述

In MIPS, we could write procedures without using the stack. For most normal procedures, we do not have to use the stack. The availability of a large number of registers allows us to use register-based parameter passing. However, when we write recursive procedures, we have to use the stack.



我对在没有堆栈的情况下工作的魔力感到非常困惑。
任何标准程序都有一个链式调用:Main()-> Function1() -> Function2() -> ... ->

即使有很多寄存器(128),这种方式也很常见:
  • 决定你应该使用哪些寄存器并保存它们的上下文
    (通常压栈)
  • 提供操作
  • 返回寄存器状态(通常从堆栈中弹出)

  • 没有人阻止我们在 CISC 中使用基于寄存器的参数传递,尤其是在现代处理器上。
    那么,如何在没有堆栈的情况下执行 RISC 程序呢?

    最佳答案

    我认为他们指的是参数传递。在大多数 RISC 机器中,参数是在寄存器中传递的,通常为此目的保留大约 6-8 个寄存器(其中一个用于返回值)。这不是强制性的,它只是约定(称为 ABI 或应用程序二进制接口(interface))。因此,如果函数的参数比寄存器少,并且这些参数足够简单以适合寄存器,则不需要额外的堆栈空间来传递这些参数。在 CISC 机器上,没有那么多用于参数的寄存器,因此 ABI 指定这些参数在堆栈上传递。

    此外,在 RISC 机器中,有许多可用的临时寄存器(特别是被调用者保存的)用于存储局部变量。在 CISC 机器上,局部变量通常分配在堆栈上,而寄存器通常保留用于中间值。

    关于stack - RISC 与 CISC 堆栈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11263610/

    33 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com