嗨,我是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
出现此错误的原因是您忘记为循环添加增量(变量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
我希望这能有所帮助!