我正在尝试对iOS 7进行调整,以便当设备是ARM64时它会运行一个版本而不是它运行另一个版本(因为float是32位而double是64)(如果你有解决方案让我知道。)
所以就像这样
if ARM64 {
\\run double code
}
else {
\\run float code
}
答案 0 :(得分:9)
您可以执行以下操作
#if __LP64__
\\You're running on 64 bit
#else
\\You're running on 32 bit
#endif
答案 1 :(得分:1)
在arm64环境中,指针占用8个字节。
- (BOOL)isArm64
{
static BOOL arm64 = NO ;
static dispatch_once_t once ;
dispatch_once(&once, ^{
arm64 = sizeof(int *) == 8 ;
});
return arm64 ;
}
答案 2 :(得分:0)
查看“arm_neon.h”头文件,我可以看到它正在检查预处理器指令__arm64
。这是在Xcode 6.1上。
除此之外,旧版ARM(32位)架构上可用的某些ARM NEON内在函数在ARM64上不可用,或者被等效名称替换的等价物替代。
特别是,vtbl2
被vtbl1q
取代,因为底层架构更多地强调了128位NEON寄存器。
如果您有一些不能在ARM64下编译的ARM NEON汇编代码,请尝试查找此类更改。