0

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

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

任何人都知道为什么这段代码总是返回 0?

4

1 回答 1

1

正如我在评论中提到的,系统调用 7 以浮点寄存器返回结果$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.
于 2016-08-24T13:27:49.817 回答