确定设备是否为ARM64

时间:2014-02-07 22:43:13

标签: ios preprocessor-directive arm64

我正在尝试对iOS 7进行调整,以便当设备是ARM64时它会运行一个版本而不是它运行另一个版本(因为float是32位而double是64)(如果你有解决方案让我知道。)

所以就像这样

if ARM64 {
    \\run double code
}
else {
    \\run float code
}

3 个答案:

答案 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上不可用,或者被等效名称替换的等价物替代。

特别是,vtbl2vtbl1q取代,因为底层架构更多地强调了128位NEON寄存器。

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