2010-04-07 481 views
5

我正在努力學習一些小型編譯器,同時嘗試在這裏學習一些MIPS。這裏是我的問題:MIPS(或SPIM):加載浮點數

MIPS具有指令李(負載立即),它會像這樣工作

li $5,100 

這將加載100到寄存器5

不過,我需要加載花車到寄存器現在,我正在努力想辦法做到這一點......因爲li $ 5,2.5不起作用。

任何人有任何建議?我正在想我可以以某種方式獲得我正在使用的浮點數的整數表示(即浮點數二進制表示法==整數二進制表示形式),然後將「整數」加載到寄存器中並把它當作一個漂浮物。

也許它太晚了,但我現在堅持。

回答

9

你將需要使用浮點寄存器來加載你的浮點數。

相反的:

li $5,2.5 

嘗試:

li.s $f5,2.5 

看看MFC1和MTC1指令整數和浮點寄存器之間移動。

+0

謝謝,那就是訣竅。如果我錯過了那麼我應該打幹草。祝你晚安。 – James 2010-04-07 00:50:01

+3

這似乎是一個僞指令。我將如何去做這件事? (MARS不支持li.s)。唯一我能想到的是將25加載到$ t0中,將10加載到$ t1中,將每個轉換爲浮動,然後進行分割。 – 2010-11-15 01:53:32

11

MARS 不會似乎有任何指令/僞指令,將浮點立即值加載到浮動寄存器。相反,您需要將浮點值存儲在內存中,並從內存中加載寄存器:

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

.text 
l.d $f0, fp1 
l.d $f2, fp2