在MIPS程序集中将int转换为float

时间:2012-05-22 06:03:41

标签: assembly mips

我的方法是将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)。

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

P.S。 2不知道lhs操作数是浮点类型,因此我无法加载2.0

1 个答案:

答案 0 :(得分:1)

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

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