2014-02-07 2 views
3

Я пытаюсь сделать настройку для iOS 7, так что когда устройство ARM64 запускает одну версию, а когда она не запускает другую (поскольку float для 32 бит и double для 64 (Если у вас есть решение для этого, дайте мне знать.)Определите, является ли устройство ARM64

Так было бы, как этот

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

ответ

9

вы бы сделать следующий

#if __LP64__ 
    \\You're running on 64 bit 
#else 
    \\You're running on 32 bit 
#endif 
+0

и введите код внутри этого? –

+4

Это время компиляции, предицируя ваш код. Когда вы компилируете для arm64 (и 64-разрядный симулятор), будет определена __LP64__ и будет скомпилирован только этот код. Для armv7 он будет неопределенным и будет использоваться 32-разрядный код. –

1

на arm64 среды, указатель тека 8 байтов.

- (BOOL)isArm64 
{ 
    static BOOL arm64 = NO ; 
    static dispatch_once_t once ; 
    dispatch_once(&once, ^{ 
     arm64 = sizeof(int *) == 8 ; 
    }); 
    return arm64 ; 
} 
0

Глядя на «arm_neon.h» файл заголовка, я могу видеть, что он проверяет директиву препроцессора __arm64. Это на Xcode 6.1.

В дополнение к этому некоторые ARM NEON, доступные на старых ARM (32-разрядных) архитектурах, недоступны на ARM64 или заменены эквивалентами, которые имеют несколько другое имя.

В частности, vtbl2 заменен на vtbl1q, поскольку основная архитектура больше подчеркивает 128-разрядные регистры NEON.

Если у вас есть код сборки ARM NEON, который не компилируется под ARM64, попробуйте найти такие изменения, как этот.

 Смежные вопросы

  • Нет связанных вопросов^_^