4

そのため、iOS デバイスが実行している CPU の種類を調べるのはかなり簡単sysctlbyname("hw.cpusubtype", ...)ですが、CPU が実際にどのような機能を持っているか (VFP、NEON、Thumb などを考えてください) を調べる明確な方法はないようです。誰かがこれを行う方法を考えることができますか?

基本的に、私が必要としているのgetauxval(AT_HWCAP)は Linux/Android と同様のもので、CPU がサポートする機能のビット マスクを返します。

注意すべき点がいくつかあります。

  1. この情報は、実行時に OS から取得する必要があります。プリプロセッサが定義されていません。
  2. ファット バイナリは解決策ではありません。ARM v6バイナリでこのことを本当に知る必要があります。

前もって感謝します!

4

3 に答える 3

2

sysctlbyname「hw.optional.neon」があります。非推奨の機能である「hw.optional.vfp_shortvector」を除いて、VFP の名前はありません。

于 2013-07-18T14:42:58.003 に答える
1

加速.フレームワークを介して行列浮動小数点乗算を実行し、実行時間を測定します。Neon と VFP 駆動の数学の違いは非常に大きく、見逃すことはできません。

Thumb は常にそこにあり、NEON の存在は armv7= Thumb2 を意味します。

于 2013-07-18T03:28:42.677 に答える
0

まず、iOS 用の armv6 バイナリをサポートする必要があるかどうかを慎重に検討してください。公開されているバージョン シェアの統計によると、iOS デバイスの 98.5% が iOS 5.0 以降を実行しており、armv6 デバイスはサポートされていません (armv6 バイナリは現在の iOS バージョンで引き続き実行されることは明らかですが、すべての新しいアプリは実際には armv7 をターゲットにする必要があります。基本的に、顧客が現在 iOS 用の armv6 バイナリを出荷している理由はありません)。

同様に、コード サイズに関するあなたの懸念は見当違いです。ファット ライブラリを提供し、顧客がそれに対して armv6 バイナリをビルドする場合、ライブラリの armv6 ビットのみがアプリケーションにビルドされます。さらに、コード サイズは通常、アプリケーション バンドル サイズのごくわずかな割合です。アプリケーションのサイズのほとんどは、他のリソースに由来します。

Ok。それはさておき、本当にこれを追求したい場合: VFP と親指はすべての iOS デバイスでサポートされているため、サポートを確認する必要はありません。Eric Postpischil が提案した方法を使用して、NEON と thumb-2 を確認できます (すべての armv7 iOS デバイスは NEON をサポートしているため、NEON の可用性は、thumb-2 の可用性と正確に一致します)。

于 2013-07-18T15:07:46.497 に答える