<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 高效的C編程之: 浮點(diǎn)運算

高效的C編程之: 浮點(diǎn)運算

作者: 時(shí)間:2013-09-30 來(lái)源:網(wǎng)絡(luò ) 收藏

14.10

大多數的處理器硬件上并不支持。但上提供了以下幾個(gè)選項來(lái)實(shí)現。

本文引用地址:http://dyxdggzs.com/article/257015.htm

·(Floating-PointAccelerator):上提供了一組協(xié)處理器指令專(zhuān)門(mén)實(shí)現浮點(diǎn)運算。但這需要硬件支持,具體某一處理器上是否有協(xié)處理器支持,可以查看ARM相關(guān)手冊。

·浮點(diǎn)運算仿真(FPE):使用軟件仿真了協(xié)處理器的執行。

·浮點(diǎn)運算庫(FPLib):使用ARM的浮點(diǎn)運算庫函數實(shí)現程序中的浮點(diǎn)運算操作。這就意味著(zhù)C編譯器要把每一個(gè)浮點(diǎn)操作轉換成一個(gè)子程序調用。C庫中的子函數使用整型運算來(lái)模擬浮點(diǎn)操作。這些代碼是用高效的匯編語(yǔ)言編寫(xiě)而成的。盡管如此,浮點(diǎn)運算執行起來(lái)還是要比相應整型運算慢得多。

注意

Thumb指令不支持協(xié)處理器指令,所以在Thumb狀態(tài)下實(shí)現浮點(diǎn)運算,只能調用ARM浮點(diǎn)運算庫。

為了在A(yíng)RM上高效地實(shí)現浮點(diǎn)運算,請遵循以下規則。

·避免使用浮點(diǎn)除法運算。通常情況下,除法運算的執行速度是普通加法或乘法運算速度的1/2。在無(wú)法避免除法的情況下,盡量使除法的除數為常數。如,x=x/3.0,可將其變?yōu)閤=x*(1.0/3.0)。這樣除數為常數(1.0/3.0),該值在編譯階段由編譯器計算。

·使用float型代替double型。float型要比double使用更少的內存和寄存器。

·避免使用三角函數功能。實(shí)現三角函數功能,如sin、cos,使用了大量的乘加運算,它的運算速度大約是普通乘法運算的十倍。

·當編譯器處理浮點(diǎn)運算操作時(shí),由于精度的影響很多優(yōu)化不能實(shí)現。比如,表達式3*(x/3),編譯器不能判斷其值和x是等價(jià)的。所以在使用浮點(diǎn)運算表達式時(shí),最好先人工的做一些必要的優(yōu)化。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>