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 オペランドが float 型であることを認識していないため、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 に答える