2012-03-15 41 views

回答

5

有人猜測,它可能是用匯編語言編寫的。它的三個步驟基本做到了:

  1. 更改舍入模式爲「圍捕」
  2. 輪整數(FRNDINT)
  3. 恢復到以前的舍入模式。

不幸的是,改變舍入模式的代碼相當難看。舍入模式是浮點控制寄存器中的幾位。您不能更改FPU內部的FPCR,因此您必須將其存儲,然後將其加載到CPU上的寄存器中,修改某些位,存儲該位,然後將修改後的版本加載回FPU。然後執行一條FP指令,然後再次執行,但是相反。

我似乎記得幾年前英特爾的一些文獻談到這件事,並且(或許)正在討論一種更好的方法來處理它 - 但我可以想象得到,即使我不是,我也不會不記得他們的改進版本是如何工作的。

+0

當然,glibc的作用不僅僅是英特爾。所以假設你是正確的,並且它是在彙編中完成的,那麼在那裏必須有多個實現。 – 2012-03-15 09:07:09

相關問題