以下是本书的引用"汇编语言简介"关于RISC(vs CISC)
在MIPS中,我们可以在不使用堆栈的情况下编写过程。对于大多数 正常的程序,我们不必使用堆栈。可用性 大量寄存器允许我们使用基于寄存器的 参数传递。但是,当我们编写递归程序时,我们 必须使用堆栈。
我对没有堆叠工作的魔法非常困惑。 任何标准程序都有链调用:Main() - > Function1() - > Function2() - > ... - >
即使有很多寄存器(128),通常也是这样:
没有人阻止我们在CISC中使用基于寄存器的参数传递,尤其是在现代处理器上。 那么,如何在没有堆栈的情况下进行RISC程序呢?
答案 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的更多信息,请访问以下链接: - **
答案 2 :(得分:-1)
RISC
CISC: