2012-01-13 87 views
9

這個社區Wiki問題的接受答案是:What are best practices that you use when writing Objective-C and Cocoa?表示iPhones不能做雙精度數學(或者說,他們可以,但只能用軟件模擬。)不幸的是,它提供的2009年鏈接參考文獻:Double vs float on the iPhone直接違反該聲明。這兩個都是舊的,在3GS剛剛推出時寫出來。iPhone/iPad雙精度數學

那麼最新的arm7架構有什麼故事?我是否需要擔心第二個鏈接引用的「拇指」編譯器標誌?我可以安全使用double變量嗎?我正在用386SX和DX以及'數學協處理器'的黑暗日子來討厭閃回。告訴我,這是2012年,我們繼續前進。

回答

6

在所有的iPhone中,沒有理由不應該支持雙精度。它們都使用Cortex-A8架構和cp15協處理器(支持IEEE浮點和硬件雙計算)。

http://www.arm.com/products/processors/technologies/vector-floating-point.php

所以,是的,你可以放心地使用雙打和它不應該是軟件仿真的iPhone手機。 雖然這是在硬件中完成的,但它可能仍然需要更多的週期才能執行雙倍數字算術與單倍數(浮點數)。除了使用double之外,我還會檢查以確保精度適合您的應用程序。作爲一個側面說明,如果處理器支持NEON指令集,雙精度和浮點運算的運算速度可能比使用協處理器快。

http://pandorawiki.org/Floating_Point_Optimization#Compiler_Support

編輯:雖然VFP和霓虹燈是可選的擴展ARM內核,大多數的Cortex-A8的有他們,並在iPhone和iPad中使用的所有他們的人做的一樣好。

+0

好的,謝謝。這就是我認爲必須的。應用領域是音頻DSP;因此我希望打雙打。我很驚訝地發現這兩個權威的,得分高的答案與這樣的自相矛盾的信息。如果任何人都可以評論「拇指」標誌,請保持開放。 – 2012-01-13 20:22:41

+0

您不必擔心Thumb編譯器標誌,除非您正在編寫低級彙編,這將根據您的優化級別進行優化,並且您是否希望它針對時間或空間進行優化。 – nmjohn 2012-01-13 20:28:58

+0

謝謝。我認爲這將被證明是一個非問題。 – 2012-01-13 20:46:11