1

我的方法是将int寄存器溢出并加载到float寄存器中然后转换

li $t0, 2       
sw $t0, -88($fp)    
l.s $f4, -88($fp)
cvt.d.s $f6, $f4

我正在尝试翻译一个表达式

float a = 3.0;
float b = a / 2;

但是上面的方法并没有给我一个正确的答案(打印出来inf)。

那我哪里做错了?有什么建议么?

PS 2不知道 lhs 操作数是浮点类型,所以我无法2.0加载

4

1 回答 1

1

您使用了不正确的后缀;.d将对双字(64 位)进行操作。这就是你想要的:

li   $t0, 2
sw   $t0, -88($fp)
lwc1 $f4, -88($fp)
cvt.s.w $f6, $f4
于 2012-05-22T07:18:23.603 回答