【问题标题】:iOS - Will ASM code run on armv7/armv7s/arm64?iOS - ASM 代码会在 armv7/armv7s/arm64 上运行吗?
【发布时间】:2014-01-18 16:49:08
【问题描述】:
我试图确定示例here 中函数neon_asm_convert() 的ASM 代码是否可以在所有armv7/armv7s/arm64 处理器(即iPhone 4S/5/5S)上运行。
很遗憾,我并不拥有所有这些设备,因此无法进行简单的运行测试。
但是,我正在开发一个应用程序(仅使用armv7 对其进行测试),它使用来自neon_asm_convert() 的__asm__(),我想知道ASM 代码是否也将在arm64 上运行。
我想我读到 ASM 代码在 armv7/armv7s 上运行不会在 arm64 上运行,但我似乎再也找不到那个参考了。
有没有人有任何冷酷的指针可以帮助我?
【问题讨论】:
标签:
iphone
objective-c
assembly
arm64
【解决方案1】:
看起来它不会在 arm64 上运行。正如this 回答所说:
arm64 是一个新的 ISA。实际的 NEON 指令和寄存器布局是全新的。您将需要为新架构重新编写或调整汇编代码。
【解决方案2】:
正如 Tomer 所说,不。 arm64 是一种新的架构,具有新的指令语法和寄存器布局。
但是,作为 Accelerate.framework 的一部分,SDK 中提供了此类色彩空间转换的快速实现。除非在特殊情况下,您不需要为此编写自己的汇编代码。具体来说,您可以使用 vImageConvert_AnyToAny 函数,该函数提供了该函数以及许多其他常见转换的高性能实现,适用于 Apple 提供的所有架构(armv7、armv7s、arm64、i386、x86_64)。