У меня проблемы с отображением числа с плавающей запятой в мипах. Я пробовал два разных подхода, и оба не работают. Любые предложения о том, что я делаю неправильно?
Это то, что первый подход
square_ root:
la $s0, arrayN # initalize array parameters
l.s $f1, 0($s0) # load coef[a] into $f0
l.s $f2, 4($s0) # load coef[b] into $f1
l.s $f3, 8($s0) # load coef[c] into $f2
l.s $f7, four # load the float 4.0 to $f7
mul.s $f4, $f2, $f2 # square b.$f2 * $f2 = $f4
mul.s $f5, $f1, $f3 # multiply a*c ($f1 * $f3 = $f5)
mul.s $f6, $f7, $f5 # multiply 4*(results of ac)($f7 * $f5 = $f6)
sub.s $f0, $f4, $f6 # b^2-4ac ($f4 - $f6 = $f0)
li $v0, 4 # system code call for print string
la $a0, xEq # print "x = "
syscall
li $v0, 2 # system code call for print integer
mov.s $f12, $f0 # move value to be printed to $f1
syscall # print the result
jr $ra # return to main
код показывает x = 0.0 он должен отображать x = -8
второй подход, который я выбрал
square_ root:
la $s0, arrayN # initalize array parameters
l.s $f1, 0($s0) # load coef[a] into $f0
l.s $f2, 4($s0) # load coef[b] into $f1
l.s $f3, 8($s0) # load coef[c] into $f2
l.s $f7, four # load the float 4.0 to $f7
mul.s $f4, $f2, $f2 # square b.$f2 * $f2 = $f4
mul.s $f5, $f1, $f3 # multiply a*c ($f1 * $f3 = $f5)
mul.s $f6, $f7, $f5 # multiply 4*(results of ac)($f7 * $f5 = $f6)
sub.s $f0, $f4, $f6 # b^2-4ac ($f4 - $f6 = $f0)
swc1 $f0, posX # output for f(x)
li $v0, 4 # system code call for print string
la $a0, xEq # print "x = "
syscall
li $v0, 1 # system code call for print string
la $a0, posX # print $f0 value
syscall
jr $ra # return to main
Эта версия отображает x = 268501116 вместо x = -8