微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

需要帮助摆脱 mips 代码中的无限循环

如何解决需要帮助摆脱 mips 代码中的无限循环

我试图在 MIPS 中对 Floyd 三角形进行编码,出于某种原因,我似乎无法找出问题所在,但是由于我的 QTspim 在我运行代码时崩溃了,因此我猜测它陷入了无限循环。我需要帮助才能摆脱无限循环。这是带有循环和所有内容代码部分:

main:

li $v0,4
la $a0,prompt  #Enter number of rows
syscall

li $v0,5
syscall
move $t1,$v0  #rows

li $t2,1 #i
li $t3,1 #j
li $t4,1 #number 

loop1:
    beq $t2,$t1,exit
    li $t3,1
    
loop2:
    beq $t3,$t2,newline
    li $v0,1
    move $a0,$t4
    syscall
    addi $t4,$t4,1 #number++
    j loop2

newline:
    li $v0,4
    la $a0,nline
    syscall
    addi $t2,1
    j loop1

解决方法

似乎您没有在任何地方增加内循环,即循环 2,因此它有问题并且陷入无限循环。除此之外,它看起来不错。这是我的代码: 主要:

man man

li $t2,-1 #i li $t3,-1 #j li $t4,1 #number

循环1: beq $t2,$t1,退出 li $t3,-1

循环2: beq $t3,$t2,换行符 li $v0,1 移动 $a0,$t4 系统调用 addi $t4,$t4,1 #number++ 添加 $t3,$t3,1 #j++ j循环2

换行符: li $v0,4 la $a0,nline 系统调用 添加 $t2,1 j循环1

,

我认为问题出在 loop2 上,您正在比较两个相等的寄存器 $t2 和 $t3,当这个循环开始循环时,它永远不会停止。您需要更改这些寄存器的值以使您的循环停止。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。