計算機組成與設計 讀書筆記——第三章

renke發表於2021-09-09

加法

  1. 將較小指數的數向較大指數的數對齊(右移,指數增大)
  2. 有效數字(即尾數)相加
  3. 對結果規格化調整,檢查溢位
  4. 對結果進行四捨五入,如果結果不再規格化,則回到3
  5. 結束

乘法

  1. 指數部分相加,減去偏階值作為新的指數部分
  2. 尾數相乘
  3. 對結果規格化調整,檢查溢位
  4. 對結果進行四捨五入,如果結果不再規格化,則回到3
  5. 設定符號位
  6. 結束

MIPS裡的浮點運算指令

  • 單精度以.s結尾,雙精度以.d結尾,如add.s add.d
  • 單精度比較為c.x.s 雙精度比較為c.x.d 其中x可能是eq neq lt le gt ge
  • 浮點比較為真跳轉bclt 浮點比較為假跳轉bclf

例題:將華氏溫度轉為攝氏溫度

```c++
float f2c (float fahr) {
return ((5.0/9.0) * (fahr - 32.0));
}


```shell
# fahr在$f12中 結果放在$f0中
f2c:
    lwcl  $f16,const5($gp)   # 把5.0存到$f16
    lwcl  $f18,const9($gp)   # 把9.0存到$f18
    div.s $f16,$f16,$f18     # 把5.0/9.0c存到$16
    lwcl  $f18,const32($gp)  # 把32.0存到$f18
    sub.s $f18,$f12,$f18     # $f18 = fahr - 32.0
    mul.s $f0 ,$f16,$f18     # $f0  = (5/9)*(fahr - 32.0)
    jr    $ra                 # return

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/430/viewspace-2807407/,如需轉載,請註明出處,否則將追究法律責任。

相關文章