确定设备是否是ARM64

我试图做一个iOS 7的调整,以便当一个设备是ARM64它运行一个版本,当它不是它运行另一个(因为浮动为32位和双为64(如果你有一个解决scheme让我知道。)

所以会是这样的

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上不可用,或者被replace为稍微不同的名称的等价物。

特别是, vtbl2vtbl2所取代,因为底层架构在128位NEON寄存器上已经强调了更多。

如果你有一些在ARM64下不能编译的ARM NEON汇编代码,请尝试查找这样的更改。

    Interesting Posts