找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 3743|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

軟浮點(diǎn) 技術(shù)使用--GCC

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:140343 發(fā)表于 2016-9-25 10:52 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
目前大多數(shù)主流CPU都支持浮點(diǎn)運(yùn)算單元,或者具備浮點(diǎn)運(yùn)算功能的輔助運(yùn)算單元,比如PowerPC e500的SPE APU。在這樣的機(jī)器上,浮點(diǎn)操作一般被編譯成硬浮點(diǎn)指令,但是有的時(shí)候?yàn)榱苏{(diào)試方便,或者由于fpu工作不正常而需要關(guān)閉硬浮點(diǎn),就需要使用軟浮點(diǎn)指令來模擬浮點(diǎn)操作。


在Linux下,一般有兩種軟浮點(diǎn)方式:
1。由kernel來模擬軟浮點(diǎn),應(yīng)用程序仍然使用硬浮點(diǎn)來編譯。在運(yùn)行的時(shí)候,碰到浮點(diǎn)指令或者使用了浮點(diǎn)運(yùn)算單元的CPU,硬件會(huì)產(chǎn)生相應(yīng)的中斷異常,kernel處理這個(gè)中斷異常,然后根據(jù)指令內(nèi)容進(jìn)行軟浮點(diǎn)操作,將結(jié)果保存好之后再恢復(fù)原來的執(zhí)行。

這樣的方式好處在于應(yīng)用程序不需要重新編譯,只需要在kernel中把浮點(diǎn)模擬的開關(guān)打開即可,所以使用起來非常方便。但是缺點(diǎn)也很明顯,每次浮點(diǎn)操作都要觸發(fā)中斷異常,執(zhí)行過程就要慢很多。另外在有些CPU上,并非所有的浮點(diǎn)指令都會(huì)觸發(fā)中斷異常,那么這些指令就沒辦法用這種方式進(jìn)行模擬。

2。另一種方式是使用軟浮點(diǎn)重新編譯所有應(yīng)用程序,這樣可以避免上述問題,而且使用gcc的浮點(diǎn)模擬性能上也會(huì)好一些。但缺點(diǎn)是因?yàn)槭褂昧瞬煌木幾g選項(xiàng),使用的ABI可能就發(fā)生了變化,如果某個(gè)庫(kù)或者應(yīng)用沒有使用同樣的編譯選項(xiàng)(ABI不同),系統(tǒng)運(yùn)行時(shí)會(huì)出現(xiàn)意想不到的情況,甚至造成崩潰。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表