iOS — будет ли код ASM работать на armv7/armv7s/arm64?

Я пытаюсь выяснить, является ли код ASM для функции neon_asm_convert() в примере здесь будет работать на всех armv7/armv7s/arm64 процессорах (т. е. iPhone 4S/5/5S).

К сожалению, у меня нет всех этих устройств, поэтому о простом тестировании не может быть и речи. Однако я разрабатываю приложение (тестирую его только с использованием armv7), которое использует __asm__() из neon_asm_convert(), и я хотел бы узнать, будет ли код ASM также работать на arm64.

Кажется, я читал, что код ASM, работающий на armv7/armv7s, не будет работать на arm64, но я больше не могу найти эту ссылку.

Есть ли у кого-нибудь указания, что холод мне поможет?


person Brett    schedule 18.01.2014    source источник


Ответы (2)


Похоже, он не будет работать на arm64. Как говорится в в этом ответе:

arm64 - это новая ISA. Фактические инструкции NEON и расположение регистров совершенно новые. Вам потребуется переписать или адаптировать ассемблерный код для новой архитектуры.

person Tomer    schedule 18.01.2014

Как сказал Томер, нет. arm64 — это новая архитектура с новым синтаксисом инструкций и расположением регистров.

Однако быстрые реализации такого преобразования цветового пространства доступны в SDK как часть Accelerate.framework. За исключением особых обстоятельств, вам не нужно писать для этого собственный ассемблерный код. В частности, вы можете использовать функцию vImageConvert_AnyToAny, которая обеспечивает высокопроизводительные реализации этого и многих других распространенных преобразований, которые работают на всех архитектурах, поставляемых Apple (armv7, armv7s, arm64, i386, x86_64).

person Stephen Canon    schedule 22.01.2014