是否可以在 iOS 中检测设备的当前处理器。我正在进行的项目需要以编程方式检查处理器是 ArmV7 还是 ArmV7s。
问问题
2021 次
4 回答
3
我不确定这是否会提供您想要的信息,但我会尝试sysctl
:
int32_t value = 0;
size_t length = sizeof(value);
sysctlbyname("hw.cpusubtype", &value, &length, NULL, 0);
子类型的值在mach/machine.h
.
/*
* ARM subtypes
*/
#define CPU_SUBTYPE_ARM_ALL ((cpu_subtype_t) 0)
#define CPU_SUBTYPE_ARM_V4T ((cpu_subtype_t) 5)
#define CPU_SUBTYPE_ARM_V6 ((cpu_subtype_t) 6)
#define CPU_SUBTYPE_ARM_V5TEJ ((cpu_subtype_t) 7)
#define CPU_SUBTYPE_ARM_XSCALE ((cpu_subtype_t) 8)
#define CPU_SUBTYPE_ARM_V7 ((cpu_subtype_t) 9)
#define CPU_SUBTYPE_ARM_V7F ((cpu_subtype_t) 10) /* Cortex A9 */
#define CPU_SUBTYPE_ARM_V7K ((cpu_subtype_t) 12) /* Kirkwood40 */
于 2013-05-17T15:02:33.050 回答
1
我不知道有任何 API 可以检查这一点,但您也许可以自己编写一个,为同一个符号提供 v7 和 v7s 汇编器实现,只需根据需要返回 true 或 false。
假设当且仅当处理器支持 v7s 时才会使用 v7s 实现,它应该可以工作。
于 2013-05-17T14:52:26.343 回答
0
这边走:
sysctlbyname("hw.cpusubtype", &value, &length, NULL, 0);
很好,但还有更简单的方法:
#include <mach-o/ldsyms.h>
int processorType = _mh_execute_header.cputype;
int processorSubtype = _mh_execute_header.cpusubtype;
虽然,它向您显示了当前代码在编译时使用的 cpu..
于 2013-05-29T09:36:44.910 回答
-2
你没有。
也就是说,不建议在 iOS 运行时以编程方式检测 ARM 架构版本支持。这是我在专门问这个问题时从一位苹果工程师那里得到的答案,并且考虑到陷阱(例如,当你得到一个意想不到的值时你会怎么做?),我可以相信他们。
(是的,有时“我该怎么做?”问题的正确答案是“你不知道。”)
于 2015-06-02T10:15:12.010 回答