3

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

所以它会是这样的

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

3 回答 3

9

您将执行以下操作

#if __LP64__
    \\You're running on 64 bit
#else
    \\You're running on 32 bit
#endif
于 2014-02-07T22:50:40.887 回答
1

在 arm64 环境中,指针占用 8 个字节。

- (BOOL)isArm64
{
    static BOOL arm64 = NO ;
    static dispatch_once_t once ;
    dispatch_once(&once, ^{
        arm64 = sizeof(int *) == 8 ;
    });
    return arm64 ;
}
于 2014-02-08T01:42:08.163 回答
0

查看“arm_neon.h”头文件,我可以看到它正在检查预处理器指令__arm64。这是在 Xcode 6.1 上。

除此之外,旧 ARM(32 位)架构上可用的一些 ARM NEON 内在函数在 ARM64 上不可用,或者被名称略有不同的等价物所取代。

特别是,vtbl2被替换为vtbl1q,因为底层架构更多地强调了 128 位 NEON 寄存器。

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

于 2014-12-06T02:30:48.483 回答