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