【发布时间】:2014-10-10 01:30:22
【问题描述】:
我目前正在开发一个程序,该程序使用 PCSPIM 在 MIPS 汇编中使用递归计算最多 200 的素数。到目前为止,我已经成功填充了一个 1-200 的数字数组和一个包含所有 1 的二进制向量列表。我正在努力解决的概念是如何使用堆栈框架来帮助完成这个过程。
这是我的堆栈帧:
subu $sp,$sp,32 # Set up the stack frame
sw $ra, 28($sp) # save $ra register to the stack
sw $fp, 24($sp) # save $fp register to the stack
addu $fp, $sp, 28 # set $fp register to the end of the stack
我只是不明白这将如何帮助我找到素数。任何见解将不胜感激!
【问题讨论】:
-
代码前,算法你清楚了吗?
-
“我只是不明白这将如何帮助我找到素数。” 它可以帮助您执行递归调用,因为您需要保存和恢复 @987654322 @(可能还有其他寄存器)不知何故,你说你的算法是递归的。
-
starrify,我对算法非常清楚。如果我必须用高级语言来做,我绝对可以做到。我只是不明白如何在 MIPS 中做到这一点。
-
@dhint4 很好。然后迈克尔的评论也是我想说的。还请谷歌了解如何在 MIPS 汇编等低级语言中实现递归。