我有一个方程式:
Summation of sin(x)
我试图通过在MIPS上创建一个程序来计算这一点。但是,它输出错误的大数字!我不知道我犯的愚蠢错误在哪里。
我创建了三个函数,一个计算阶乘,另一个计算幂,第三个大函数是sin函数。
li $v0, 5
syscall
addi $a0, $v0, 0
li $t4, 1
addi $s7, $v0, 0
jal sin
j end
sin:
Loop:
slti $t5, $t4, 5
beq $t5, 0, exitLoop
addi $sp, $sp, -8
sw $ra, 4($sp)
sw $a0, 0($sp)
li $a0, -1
addi $a1, $t4, 0
jal power
addi $s0, $v0, 0
lw $a0, 0($sp)
sll $a1, $t4, 1
addi $a1, $a1, 1
jal power
addi $s1, $v0, 0
sll $a0, $t4, 1
addi $a0, $a0, 1
jal factorial
addi $s2, $v0, 0
lw $a0, 0($sp)
lw $ra, 4($sp)
mult $s0, $s1
mflo $s3
div $s3, $s2
mflo $s3
add $s7, $s7, $s3
addi $t4, $t4, 1
j Loop
exitLoop:
addi $v1, $s7, 0
addi $sp, $sp, 8
jr $ra
power:
addi $t0 $a0, 0
li $t1, 0
loop:
slt $t3, $t1, $a1
beq $t3, 0, exit
mult $t0, $a0
mflo $t0
addi $t1, $t1, 1
j loop
exit:
addi $v0, $t0, 0
jr $ra
factorial:
li $t0, 1
bgt $a0, $t0, L1
li $v0, 1
jr $ra
L1:
addi $sp, $sp, -8
sw $ra, 4($sp)
sw $a0, 0($sp)
addi $a0, $a0, -1
jal factorial
lw $a0, 0($sp)
mul $v0, $a0, $v0
lw $ra, 4($sp)
addi $sp, $sp, 8
jr $ra
end:
li $v0, 1
addi $a0, $v1, 0
syscall