yon*_*evy 10 iphone arm ipod-touch neon
我正在寻找一种方法来在运行时区分配备新ARM处理器的设备(如iPhone 3GS和一些iPod 3G)以及配备旧ARM处理器的设备.我知道我可以使用uname()来确定设备型号,但由于只有部分iPod接触3G的ARM处理器得到了提升,这还不够.
因此,我正在寻找其中一个:
提前致谢 :)
Ste*_*non 12
不完全是你所要求的,但一个简单的解决方案是构建你的应用程序胖,以便它包含ARMv6和ARMv7的可执行代码.如果这样做,相应的代码将自动在处理器上运行,您无需进行任何运行时检查.实际上,您可以让加载程序为您执行运行时检测.
为此,将XCode项目中的Architectures设置从"Standard(armv6)"更改为"Optimized(armv6 armv7)"
然后,在您的实现中,您执行此操作:
#if defined __ARM_NEON__
// Code that uses NEON goes here
#else // defined __ARM_NEON__
// Fallback code without NEON goes here
#endif // defined __ARM_NEON__
Run Code Online (Sandbox Code Playgroud)
有一个类似的宏,你可以用来检查(非NEON)ARMv7功能,我不记得我的头脑.
如果您真的想要进行运行时调度,请查看libc 中的sysctlbyname函数.具体来说,我认为查找HW_MACHINE_ARCH参数可能对您有用.
| 归档时间: |
|
| 查看次数: |
5374 次 |
| 最近记录: |