2013-02-15 101 views
2

我正在嘗試寫出MIPS二進制代碼,用於與浮點寄存器相關的機器指令。但是,雖然我可以找到浮點指令的操作碼,但我找不到哪些數字指向哪些浮點寄存器。如果我想引用$ t1,我的書和Internet可以告訴我使用哪個數字寄存器,但是我找不到有關如何引用$ f1的任何信息。MIPS中的浮點寄存器是哪些數字寄存器?

回答

3

有32個浮點寄存器:$f0 .. $f31。但是每個浮點操作都是在單獨的處理單元FPU(浮點單元)中完成的(在早期的MIPS處理器中),所以不能用普通(整型)命令訪問浮點寄存器。用於FPU命令的FPU寄存器和用於CPU命令的CPU寄存器。

有畫面,和透明的描述 http://www.cim.mcgill.ca/~langer/273/12-coprocessors.pdf

所有FPU命令被編碼爲協處理器指令,協處理器1(CP1) 檢查第一和http://www.cs.sunysb.edu/~lw/spim/MIPSinstHex.pdf

字段英尺(5)FS最後頁(5)fd(5)是寄存器代碼(全部是5位寬)。 $ f0將被編碼爲0; $ f31爲31(十進制)或0x1f(十六進制)。對於雙寄存器值(64位雙精度格式),只記錄寄存器對中的第一個寄存器的編號(只允許偶數重新編號:0,2 ..30)。

詳細的操作碼錶在這裏:http://www.math.unipd.it/~sperduti/ARCHITETTURE-1/mips32.pdf(頁A-73)

+0

謝謝!我有「接受」這個答案嗎?我不知道該怎麼做,但我想...... – 2013-02-17 00:31:13

+0

是的,綠色「V」形符號表示答案被接受 – osgx 2013-02-17 06:33:18