标签: assembly mips cpu-architecture
我需要以下MIPS代码
我仍然对堆栈指针保存当前子程序地址的方式感到困惑。此外,jal事实之后会发生什么,因为看起来这段代码从未使用过,因为jal事实总是用事实地址更新PC。
答案 0 :(得分:1)
通过数字递减堆栈指针可以保留堆栈上的大量字节内存。反向增加可以释放空间。关于在堆栈中保存和恢复寄存器的所有其他内容都在注释中提供。
最后一条指令从子程序返回。当参数为零时,观察到例程结束时存在条件分支。因此,递归调用不是无限的。最终,参数递减足够多次以达到零,此时第一次返回发生,因为条件分支跳转到子例程的末尾。然后在jal之后继续执行调用者。乘法后,还有另一个回报。等等。