【发布时间】:2013-07-18 00:33:33
【问题描述】:
因此,通过查询sysctlbyname("hw.cpusubtype", ...) 可以很容易地确定 iOS 设备运行哪种 CPU,但似乎没有明显的方法可以确定 CPU 实际具有哪些功能(想想 VFP、NEON、Thumb、. ..)。有人能想出办法吗?
基本上,我需要的是类似于 Linux/Android 上的 getauxval(AT_HWCAP) 的东西,它返回 CPU 支持的功能的位掩码。
需要注意的几点:
- 信息必须在运行时从操作系统中检索。没有预处理器定义。
- 胖二进制文件不是解决方案。我真的确实需要了解 ARM v6 二进制文件中的这些内容。
提前致谢!
【问题讨论】:
-
我查看了
man sysctl,但我自己没有找到任何东西。胖二进制文件不是解决方案的原因是(a)它的大小显着增加(b)在应用程序中使用哪些架构版本的决定实际上不是由我做出的,而是由客户做出的。因此,如果他们选择使用 ARM v6 二进制文件,则该二进制文件必须适用于 v7 和 v7s。同样,带有 ARM v6 和 v7s 代码的胖二进制文件必须在 v7 上运行,依此类推。 -
鉴于 iOS 设备的数量非常合理,您可能希望通过记录每个设备的可用 CPU 功能、列出它们并简单地检测您使用的设备来简化您的问题运行时使用
UIDevice类检索可用功能列表。
标签: ios floating-point arm neon thumb