了解 MIPS
Understanding MIPS
我需要以下 MIPS 代码的帮助
我仍然对堆栈指针保存当前子程序地址的方式感到困惑。另外,在 jal fact 之后会发生什么,因为它看起来从未使用过这段代码,因为 jal fact 总是用 fact 的地址更新 PC。
将堆栈指针递减一个数字会在堆栈上保留那么多字节的内存。递增则相反,释放 space。关于保存和恢复寄存器的所有其他内容 to/from 堆栈在评论中提供。
来自子例程的最后一条指令 returns。请注意,当参数为零时,例程末尾有一个条件分支。所以,递归调用不是无限的。最终参数被递减足够多次以达到零,此时第一个 return 发生,因为条件分支跳转到子例程的末尾。然后在调用者中继续执行,在 jal 之后。乘法之后,还有一个return。等等。
我需要以下 MIPS 代码的帮助
我仍然对堆栈指针保存当前子程序地址的方式感到困惑。另外,在 jal fact 之后会发生什么,因为它看起来从未使用过这段代码,因为 jal fact 总是用 fact 的地址更新 PC。
将堆栈指针递减一个数字会在堆栈上保留那么多字节的内存。递增则相反,释放 space。关于保存和恢复寄存器的所有其他内容 to/from 堆栈在评论中提供。
来自子例程的最后一条指令 returns。请注意,当参数为零时,例程末尾有一个条件分支。所以,递归调用不是无限的。最终参数被递减足够多次以达到零,此时第一个 return 发生,因为条件分支跳转到子例程的末尾。然后在调用者中继续执行,在 jal 之后。乘法之后,还有一个return。等等。