嗨,我是 MIPS 的新手,我知道我的代码有点乱,这是我编写的质数代码,它一直困扰着我,但我似乎无法弄清楚我的代码有什么问题。我认为问题在于嵌套循环,因为我不太习惯使用 MIPS 来使用循环。我一直在使用 MARS 对 MIPS 进行编码,每次运行它时,它都会死机。
这是我的代码的一部分,其中我为下面的素数编码了循环部分:
#Outer loop
L2: move $t3, $zero
# Inner loop
L1: remu $t4, $t1, $t2
bne $t4, $zero, I
move $t3, $t5
I:
blt $t2, $t1 L1
bne $t3, $zero, P
li $v0, 1
move $a0, $t1
syscall
li $v0, 4
la $a0, space
syscall
P:
move $t2, $t6
bgt $t1, $t0, E
j L2
E: li $v0, 10
syscall # call operating sys
end: jr $ra
答案 0 :(得分:0)
您收到此错误的原因是您忘记为循环添加增量(变量i和k),导致错误,循环不会终止(就像while循环一样)您的代码需求是一条线
add $t1, $t1, $t5
在您创建的“P”分支/循环中 还有
add $t2, $t2, $t5
在您创建的“I”分支/循环中 所以你的代码看起来像
#Outer loop
L2: move $t3, $zero
# Inner loop
L1: remu $t4, $t1, $t2
bne $t4, $zero, I
move $t3, $t5
I: add $t2, $t2, $t5 # increment k
blt $t2, $t1 L1
bne $t3, $zero, P
li $v0, 1
move $a0, $t1
syscall
li $v0, 4
la $a0, space
syscall
P: add $t1, $t1, $t5 # increment i
move $t2, $t6
bgt $t1, $t0, E
j L2
E: li $v0, 10
syscall
end: jr $ra
希望能帮到你!