浮点数的乘积

product of floating point numbers

我必须将两个双精度浮点数相乘并打印出来,我的代码如下:

li $v0, 7       # $v0 =7    
syscall         # run read_double
jal p4          # run println

mfc1 $v0, $f4       # $v0 = $f4

li.d $f2, 4.3934567
mul.d $f0, $f4, $f2
mov.d $f12, $f0     # $f12 = $f6


li $v0, 3       #  $v0 =3
syscall         # run print_double
jal p4          # run println
jr $ra

有人知道为什么这段代码 returns 总是 0 吗?

正如我在评论中提到的,系统调用 7 returns 浮点寄存器 $f0 中的结果。所以你的代码可以简化为:

li $v0, 7       # $v0 =7    
syscall         # run read_double

li.d $f2, 4.3934567
mul.d $f12, $f0, $f2   # multiply user input by $f2. put the result in $f12
                       # for easy printing.