Reputation: 3
I was trying to code Floyd's triangle in MIPS and for some reason, I cannot seem to figure out the problem but since my QTspim is crashing while I am running the code therefore I am guessing it is stuck in an infinite loop. I need help in getting out of the infinte loop. This is the part of code with the loops and everything :
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 , $t2 , 1
j loop1
Upvotes: 0
Views: 567
Reputation: 70
I think the issue is at loop2 where you are comparing two equal registers $t2 and $t3, and when this loop starts looping, it never stops. You need to change the values of these register in order to make your loop halt.
Upvotes: 0
Reputation: 26
It seems like you are not incrementing the inner loop i.e. loop 2 anywhere and therefore its having issues and is getting stuck in an infinite loop. Apart from that it looks fine. Here is my code: main:
li $v0, 4
la $a0, prompt
syscall
li $v0, 5 #read number from console
syscall
move $t1, $v0
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++ addi $t3 , $t3 , 1 #j++ j loop2
newline: li $v0 , 4 la $a0 , nline syscall addi $t2 , $t2 , 1 j loop1
Upvotes: 1