RISC与CISC堆栈

时间:2012-06-29 14:26:09

标签: stack processor

以下是本书的引用"汇编语言简介"关于RISC(vs CISC)

  

在MIPS中,我们可以在不使用堆栈的情况下编写过程。对于大多数   正常的程序,我们不必使用堆栈。可用性   大量寄存器允许我们使用基于寄存器的   参数传递。但是,当我们编写递归程序时,我们   必须使用堆栈。

我对没有堆叠工作的魔法非常困惑。 任何标准程序都有链调用:Main() - > Function1() - > Function2() - > ... - >

即使有很多寄存器(128),通常也是这样:

  1. 决定你应该采取哪些寄存器并保存其上下文 (通常推着堆栈)
  2. 提供操作
  3. 返回寄存器状态(通常从堆栈弹出)
  4. 没有人阻止我们在CISC中使用基于寄存器的参数传递,尤其是在现代处理器上。 那么,如何在没有堆栈的情况下进行RISC程序呢?

3 个答案:

答案 0 :(得分:6)

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

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

答案 1 :(得分:1)

精简指令集计算机(RISC /发音为风险'/)是一种只使用简单指令的计算机,可以将其分成多个指令,这些指令在单个时钟周期内执行低级操作,顾名思义。 让我们举一个乘以两个数的例子                        A = A * B; <<< ======这是C语句。 对于这个特定的任务,CISC处理器将准备一个特定的指令(我们称之为“MULT”)。执行时,此指令 将两个值加载到单独的寄存器中 将执行单元中的操作数相乘 最后,将产品存储在适当的寄存器中。 因此,可以用一条指令完成两个数相乘的整个任务: MULT A,B<<< ======这是汇编语句

   MULT is what is known as a “complex instruction.” It operates directly  on the computer’s memory banks and does not require the programmer to  explicitly call any loading or storing functions.

RISC处理器仅使用可在一个时钟周期内执行的简单指令。  为了执行CISC方法中描述的一系列精确步骤,程序员需要编写四行汇编代码:             LOAD R1,A<<<< ======这是汇编语句             LOAD R2,B<<< ======这是汇编语句             PROD A,B<<< ======这是汇编语句             STORE R3,A<<< ======这是汇编语句 优点:- 每条指令只需要一个时钟周期来执行,整个程序将在与多周期“MULT”命令大致相同的时间内执行。 这些RISC“精简指令”比复杂指令需要更少的硬件空间晶体管,为通用寄存器留出了更多空间。因为所有指令都在相同的时间内执行(即一个时钟)       **要了解有关RISC和CISC的更多信息,请访问以下链接: - **

http://www.firmcodes.com/difference-risc-sics-architecture/

答案 2 :(得分:-1)

RISC

  1. 指令不是
  2. 指令长度固定
  3. 它使用加载/存储指令。
  4. 示例:ARM7,ARM9。
  5. 执行程序所需的循环次数不多 例如,如果我们想要产品2否,那么我们使用以下代码 加载a,12 负载b,14, 刺激a,b 商店(记忆位置),b
  6. CISC:

    1. NO指令更多
    2. 指令长度可变
    3. 它不使用加载/存储指令来访问内存
    4. 示例:奔腾
    5. 执行程序所需的循环次数较少 例如 对于两个产品没有用 MULT(内存位置1),内存位置2 并且结果存储在内存位置1