iOS - ASM代码是否可以在armv7 / armv7s / arm64上运行?

时间:2014-01-18 16:49:09

标签: iphone objective-c assembly arm64

我正在尝试确定示例here中函数ASM的{​​{1}}代码是否会在所有neon_asm_convert()处理器上运行(即。{{ 1}})。

不幸的是,我并不拥有所有这些设备,因此简单的运行测试是不可能的。 但是,我正在开发一个应用程序(仅使用armv7/armv7s/arm64测试它),该应用程序使用iPhone 4S/5/5S中的armv7,我想知道__asm__()代码也将在neon_asm_convert()上运行。

我想我读过在ASM上运行的arm64代码无法在ASM上运行,但我似乎无法找到该引用。

有没有人有冷却帮助我的指针?

2 个答案:

答案 0 :(得分:2)

看起来它不会在arm64上运行。正如this回答说:

  

arm64是一个新的ISA。实际的NEON指令和寄存器布局是全新的。您需要重新编写或调整新架构的汇编代码。

答案 1 :(得分:1)

正如托默所说,没有。 arm64是一种新的架构,具有新的指令语法和寄存器布局。

然而,作为Accelerate.framework的一部分,SDK中提供了这种颜色空间转换的快速实现。除特殊情况外,您不需要为此编写自己的汇编代码。具体来说,您可以使用vImageConvert_AnyToAny函数,该函数提供此功能的高性能实现以及许多其他常见转换,这些转换适用于Apple发布的所有体系结构(armv7,armv7s,arm64,i386,x86_64)。