下面是引自书“汇编语言简介”关于RISC(VS CISC)RISC VS CISC堆栈
在MIPS,我们可以写程序,而无需使用堆栈。对于大多数 正常程序,我们不必使用堆栈。大量寄存器的可用性 允许我们使用基于寄存器的 参数传递。但是,当我们编写递归程序时,我们 必须使用堆栈。
我对工作没有堆栈的魔法非常困惑。 任何标准程序有一个链调用:主() - >功能1() - >功能2() - > - >
即使有许多寄存器(128)的方法是通常的:
- 决定哪些寄存器,你应该采取并保存其上下文 (通常是推在栈上)
- 提供操作
- 返回登记状态(通常从栈中弹出)
没有人会阻止我们在CISC中使用基于寄存器的参数传递,特别是在现代处理器上。 那么,如何在没有堆栈的情况下编写一个RISC程序?
您提供的报价只提到不使用堆栈,而不是整个程序的程序编写程序。但是,如果你的程序足够简单,你正在汇编写入,并且你有足够的寄存器,那么你可以手动为每个变量和参数分配一个寄存器。尽管如此,你可能仍然会使用栈来获取任何jsrs/calls/isrs等的返回地址。 – tinman