I've been working on a MIPS program to implement the sin(x) function using Taylor Series. To do so I had to create functions such as factorial (x!) and power (x^y), they work perfectly fine on their own (outside the For loop) but something fails the moment they are instantiated on the loop, whether its that nothing is printed or it prints the result infinitely. I've tried all kind of things to make it work but nothing seems to work. The loop works fine with sums and subtractions, the summation works but fails whenever the power function is called inside of it. Here's my code:
.text
main:
    jal loop
    
    addi $v0, $0, 10
    syscall
loop:
    
    addi $t0, $0, 0   # i = 0
    addi $t1, $0, 8   # n = 8
    add $t2, $0, 0   # sum = 0
for:
    beq $t0, $t1, endFor
    addi $a1, $0, 2   # x = 2
    addi $a2, $0, 3   # y = 3
    jal power
    add $t2, $t2, $v0 # sum += power(2**3)
    addi $t0, $t0, 1
    j for
endFor:
    addi $v0, $0, 1
    addi $a0, $t2, 0
    syscall
    addi $v0, $0, 10
    syscall
power:
    addi $t0, $0, 1   # result = 1
    add $t1, $a1, $0  # x
    add $t2, $a2, $0  # y
while:
    beq $t2, $0, endWhile
    mul $t0, $t0, $t1
    addi $t2, $t2, -1
    j while
endWhile:
    add $v0, $t0, $0
    jr $ra
Thanks in advance for your responses, no doubt they'll be real helpful!!
 
    