我真的很難搞清楚如何解決這個問題。我得到,我想要採取整數和分數的二進制表示,將它們合併爲尾數,並將符號位分配給開始,但我不知道如何在MIPS中實際實現它。MIPS - 如何將一組整數轉換爲單精度浮點數
任何人都可以幫助我至少開始?
假設您的MIPS硬件沒有浮點寄存器和浮點ALU。如果您想要執行浮點數加法,您將不得不使用整數寄存器($ 0 - $ 31)和整數ALU來完成工作的MIPS整數指令。在此作業問題中,您將編寫MIPS代碼(僅使用整數指令和整數寄存器)來實現 過程,以添加兩個浮點數並編寫一個調用該過程的主函數。
寫MIPS程序toFloat把一個浮點數爲IEEE單精度格式。 該過程需要三個整數作爲輸入:$ a0,$ a1,$ a2,以這種方式表示浮點數 :如果$ a0包含0,則浮點數爲正,否則如果$ a0包含1 , 浮點數是負數。存儲在寄存器$ a1中的數字是浮點數 的整數部分,存儲在寄存器$ a2中的數字是浮點數 的小數部分。例如,要顯示浮點數-5.25,三個輸入寄存器應包含 這些數字:$ a0 = 1,$ a1 = 5和$ a2 = 25. 對於小數部分,您可以使用指令將25除以100。分數將存儲在HI寄存器中,您可以使用mfhi指令來檢索分數。 該過程將返回v0,其中包含與由三個輸入數字表示的 浮點數對應的IEEE單精度模式。 一旦你有這個程序,你可以用它來將輸入數字2.5和7.5轉換成它們的IEEE單精度格式的 。
編寫一個MIPS程序printFloat打印一個IEEE單精度格式的數字。 該過程的輸入是$ a0,這是一個IEEE單精度格式的數字。 程序將簡單地打印存儲在$ a0中的位模式。您可以使用循環打印每一位。 一旦你有了這個程序,你就可以用它來以浮點格式打印輸入數字2.5和7.5。
寫一個MIPS程序來實現主函數來調用你的程序。在這個程序中,你將會調用
to浮點(0,2,5)產生浮點格式爲2.5;
toFloat(0,7,5)生成7.5的浮點格式;
printFloat to print 2。5
printFloat打印7.5
下面是我到目前爲止的代碼:
http://s7.postimg.org/v39ufikaj/code.png
「剛剛幫我開始」走多遠?我可以建議使用「sll $ t0,$ a0,31」將符號位移動到正確位置做「或者$ t1,$ t1,$ t0」 - 或者您需要一個更類似於「什麼是向左移位並按位或?「 – RobertB
這絕對有幫助。所以很明顯,我們將符號位置移動到第一位,但我對如何從這些值確定指數和尾數感到困惑。 – Nimbus
對於代碼片段,您可能會有更多的運氣發佈到https://gist.github.com/ - 從.png圖像讀取彙編代碼有點太痛苦! – RobertB