Я должен написать программу, которая будет вычислять факториал двойников в MIPS.Вот моя попытка, но я вышел за пределы допустимой ошибки и не знаю, как с ней справиться
.data
x: .double 2.1
theAnswer: .double 0.0
one: .double 1.0
.text
.globl main
main:
l.d $f2, one
l.d $f14, x
jal mfact
li $v0, 3
s.d $f0, theAnswer
l.d $f12, theAnswer
syscall
li $v0, 10
syscall
.globl mfact
mfact:
andi $sp, 0xfffffff8
addi $sp, $sp, -16
sw $ra, ($sp)
s.d $f12, 8($sp)
#base case
l.d $f0, one
c.le.d $f14,$f0
bc1t exit
mov.d $f12, $f14
sub.d $f14, $f14, $f2
jal mfact
#multipling the numbers
mul.d $f0, $f12, $f0
exit: #poping out
lw $ra, ($sp)
l.d $f12, 8($fp) #there is the RUNTIME EXCEPTION : OUT OF RANGE 0x0000008
addu $sp,$sp,16
jr $ra