7

ここでいくつかのMIPSを学習しようとしている間、私は小さなミニコンパイラに取り組んでいます。これが私の問題です:

MIPSには、次のように機能する命令li(即時ロード)があります。

li $5,100

これにより、100がレジスタ5にロードされます。

しかし、私は今フロートをレジスタにロードする必要があり、それを行う方法を見つけるのに苦労しています... li$5,2.5は機能しないためです。

誰かアドバイスはありますか?

私はCで作業していますが、作業しているfloatの整数表現を取得して(つまり、floatバイナリ表現== intsバイナリ表現)、「整数」をレジスタにロードして、次のように処理できると考えていました。それ以降はフロート。

多分手遅れですが、イムは今立ち往生しています。

4

2 に答える 2

31

MARSには、浮動小数点の即値を浮動小数点レジスタにロードする命令/疑似命令がないようです。代わりに、浮動小数点値をメモリに入れて、メモリからレジスタをロードする必要があります。

.data
fp1: .double 2.5
fp2: .double -0.75

.text   
l.d $f0, fp1
l.d $f2, fp2
于 2012-10-16T13:41:03.327 に答える
10

float をロードするには、浮動小数点レジスタを使用する必要があります。

それ以外の:

li $5,2.5

試す:

li.s $f5,2.5

整数レジスタと浮動小数点レジスタの間を移動する mfc1 命令と mtc1 命令を見てください。

于 2010-04-07T00:41:28.423 に答える