2015-07-09 105 views
2

我們都知道MIPS FPU有兩個精度單精度或雙精度。當我在指令集中查看它時,我發現對於相同的操作,單精度和雙精度的指令沒有區別。單精度指令與雙精度指令的區別

例如,這裏從MIPS Architecture For Programmers Volume II:,指令ADD.fmt enter image description here

無論是雙或單精度,操作數和功能碼都相同。解碼器如何知道它是單精度指令還是雙精度指令?或者5位fmt區域中的隱藏信息?我無法從谷歌找到任何好的答案,有人可以解釋這條指令的工作原理嗎?

回答

3

在「FPU操作數格式字段」下,MIPS文檔詳細介紹了此內容。 fmt字段包含該特定數據。

fmt字段是5位長,它可以取以下值:

0-15: reserved 
16: single 
17: double 
18-19: reserved 
20: word 
21: long 
22-31: reserved 

Word和龍是未實現爲ADD.S和ADD.D.

+0

指令ADD.fmt中的fmt區域只有5位。但在你的回答中,fmt包含完全32位的寄存器。這個文件是一個獨立的寄存器嗎?當我們實現這個指令時,兩種不同精度的硬件是相同的嗎?我的意思是如果FPU支持雙精度,那麼硬件是雙精度的,不管指令是單精度還是雙精度。 –

+0

我寫了「可能的**值**」,而不是位的位置。 5位是0-31。 – karatedog

+0

@帥雨強我更新了答案,以避免更進一步的混淆。 – karatedog