iOS 中的 armv7,armv7s,arm64,i386,x86_64 都是什麼

weixin_34402408發表於2016-08-09

目前為止Apple移動裝置預設指令集(2014.8.22)

armv6 裝置: iPhone, iPhone2, iPhone3G, 第一代、第二代 iPod Touch
armv7 裝置: iPhone3GS, iPhone4, iPhone4S
iPad, iPad2, iPad3(The New iPad), iPad mini
iPod Touch 3G, iPod Touch4
armv7s裝置: iPhone5, iPhone5C, iPad4(iPad with Retina Display)
arm64 裝置: iPhone5S, iPad Air, iPad mini2(iPad mini with Retina Display)


現在的問題:

既需要支援32位的指令集比如裝置:
iPhone4, iPhone4S, iPhone5, iPhone5C

也需要支援64位的指令集比如裝置:
iPhone5S, iPhone6, iPhone6p, iPhone6s

蘋果A7處理器支援兩個不同的指令集:32位ARM指令集(armv6|armv7|armv7s)和64位ARM指令集(arm64)。

使用 standard architectures (including 64-bit)(armv7,arm64) 引數,則打的包裡面有32位、64位兩份程式碼,在iPhone5s( iPhone5s的cpu是64位的 )下,會首選執行64位程式碼包, 其餘的iPhone( 其餘iPhone都是32位的,iPhone5c也是32位 ),只能執行32位包,但是包含兩種架構的程式碼包,只有執行在ios6以上的系統上。

而使用 standard architectures (armv7,armv7s) 引數, 則打的包裡只有32位程式碼, iPhone5s的cpu是64位,但是可以相容32位程式碼,即可以執行32位程式碼。但是這會降低iPhone5s的效能。 其餘的iPhone對32位程式碼包更沒問題, 而32位程式碼包,對系統也幾乎也沒什麼限制。

所以總結如下: 要發揮iPhone5s的64位效能,就要包含64位包,那麼系統最低要求為ios6。 如果要相容ios5以及更低的系統,只能打32位的包,系統都能通用,但是會喪失iPhone5s的效能。
當然這樣做會使部分裝置出現效能損失,當然在普通應用中這點體現幾乎感覺不到,至少不會威脅到使用者體檢。

連結:
http://www.jianshu.com/p/3fce0bd6f045

相關文章