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!!