【问题标题】:Calculating Prime Numbers in MIPS Assembly在 MIPS 汇编中计算素数
【发布时间】: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 汇编等低级语言中实现递归。

标签: assembly mips pcspim


【解决方案1】:

如果您熟悉埃拉托色尼筛法,则无需递归即可找到素数。这种方法比使用递归更简单,内存效率更高,并且不需要使用堆栈。

我无法帮助您“这将如何帮助我找到素数”,因为您从未指定您使用的算法。

【讨论】:

    猜你喜欢
    • 2020-06-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多