I have found a code snippet on this website as an answer to a question. The code uses nested loops in MIPS.
Here is the code :
.data
    prompt: .asciiz "Please enter the edge length of the base of right 
                      triangle: "
    newLine: .asciiz "\n"
    star: .asciiz "*"
.text
    main:
        li $v0, 4       # print the prompt
        la $a0, prompt
        syscall
        li $v0,5            #take user input
            syscall
    
        move $s0, $v0     # move the input to $s0
        li $t0, 0       # load 0 at t0
    outerLoop:
        beq $t0, $s0, end   #(for i=0;i<=baseLength;i++)
                    #if t0=s0 branch to end
        
        addi $t0, $t0, 1    # increment i
        li $t1, 1       #load 1 at t1
        jal changeLine      #jump to changeLine
    innerLoop:
        bgt $t1, $t0, outerLoop  #(for j=0;j<=i;j++)
                     # if t1=t0 branch to outerLoop
        li $v0, 4       # print star
        la $a0, star
        syscall 
    
        addi $t1, $t1, 1    # increment j
        j innerLoop     # jump to innerLoop
    changeLine: 
        li $v0, 4       # new line
        la $a0, newLine
        syscall 
        jr $ra          # jump to after the call instruction
    end:
        li $v0, 10      # end of program
        syscall
The code works perfectly but I could not understand how the outer loop iterates even though there is no an explicit command like j outerLoop.
Any help is appreciated.
 
    