ARM 浮點(diǎn)小知識
一: ARM實(shí)現(xiàn)浮點(diǎn)運(yùn)算的類型
有三種方法實(shí)現(xiàn)ARM的浮點(diǎn)運(yùn)算,而且通常這三種方法在ARM與其編譯器的發(fā)展時間
上是串行的.
(1): Linux Kernel 的 Floating point emulation,即內(nèi)核完成浮點(diǎn)模擬(用戶模式代碼通過系統(tǒng)調(diào)用由內(nèi)核完成);
(2): gcc 編譯器帶的libc實(shí)現(xiàn)軟件浮點(diǎn)運(yùn)算;
(3): ARM硬件浮點(diǎn)運(yùn)算,由ARM協(xié)處理器完成真正的硬件浮點(diǎn)運(yùn)算(舊的ARM不支持).
二: GNU gcc 編譯器浮點(diǎn)編譯選項(xiàng)(加入CFLAGS變量中)
(1): -mfloat-abi=soft <==> -msoft-float
由gcc的libc完成.
(2): -mfloat-abi=softfp
由gcc的libc完成.
(3): -mfloat-abi-hard <==> -mhard-float
由ARM硬件完成.
(4): --fpu=name name-->{none, vfpv, vfpv3,vfpv3_fp16,fpe, ...}.
評論