ARM架構(gòu)
ARM架構(gòu)過去稱作進階精簡指令集機器(Advanced RISC Machine展懈,更早稱作:Acorn RISC Machine),是一個32位精簡指令集(RISC)處理器架構(gòu)泳秀,ARM處理器非常適用于移動通訊領(lǐng)域标沪,符合其主要設(shè)計目標為低耗電的特性榄攀。
ARM和Intel處理器的第一個區(qū)別是嗜傅,前者使用精簡指令集(RISC),而后者使用復雜指令集(CISC)檩赢。
ARM處理器吕嘀,特點是體積小、低功耗贞瞒、低成本偶房、高性能,所以幾乎所有手機處理器都基于ARM军浆,在嵌入式系統(tǒng)中應用廣泛棕洋。
ARM指令集
ARM指令集是指計算機ARM操作指令系統(tǒng)。
armv6乒融、armv7掰盘、armv7s摄悯、arm64、arm64e都是arm處理器的指令集愧捕,所有指令集原則上都是向下兼容的奢驯。比如,你的設(shè)備是armv7s指令集次绘,那么它也可以兼容運行比armv7s版本低的指令集:armv7瘪阁、armv6。Xcode4.5起不再支持armv6邮偎。
蘋果A7處理器支持兩個不同的指令集:32位ARM指令集(armv6|armv7|armv7s)和64位ARM指令集(arm64)管跺。
i386|x86_64 是Mac處理器的指令集。
i386通常被用來作為對Intel 32位微處理器的統(tǒng)稱钢猛。X86-64可在同一時間內(nèi)處理64位的整數(shù)運算伙菜,并兼容X86-32架構(gòu),x86_64是針對x86架構(gòu)的64位處理器。當使用iOS模擬器的時候會遇到i386|x86_64命迈,iOS模擬器沒有運行arm指令集贩绕,編譯運行的是x86指令集,所以壶愤,只有在iOS設(shè)備上淑倾,才會執(zhí)行設(shè)備對應的arm指令集。
arm64e:iPhone XS\XR\XS Max
arm64:iPhoneX | iPhone8 | iPhone7 | iPhone6s | iphone6s plus|iPhone6| iPhone6 plus|iPhone5S | iPad Pro | iPad Air2 | iPad Air|iPad mini4 | iPad mini3 | iPad mini2(iPad mini with Retina Display)
armv7s:iPhone5|iPhone5C|iPad4(iPad with Retina Display)
armv7:iPhone4|iPhone4S|iPad|iPad2|iPad3(The New iPad)|iPad mini|iPod Touch 3G|iPod Touch4
i386是針對intel通用微處理器32位處理器
x86_64是針對x86架構(gòu)的64位處理器
模擬器32位處理器測試需要i386架構(gòu)征椒,
模擬器64位處理器測試需要x86_64架構(gòu)娇哆,
真機32位處理器需要armv7,或者armv7s架構(gòu)(iOS11放棄支持32位應用,蘋果強調(diào)勃救,2018年1月起所有32位應用都會被取締碍讨。)
真機64位處理器需要arm64架構(gòu)。
應用
Xcode中指令集相關(guān)選項(Build Setting中)
Architectures
指定工程被編譯成可支持哪些指令集類型蒙秒,而支持的指令集越多勃黍,就會編譯出包含多個指令集代碼的數(shù)據(jù)包,對應生成二進制包就越大晕讲,也就是ipa包會變大覆获。Valid Architectures
限制可能被支持的指令集的范圍,也就是Xcode編譯出來的二進制包類型最終從這些類型產(chǎn)生瓢省,而編譯出哪種指令集的包弄息,將由Architectures與Valid Architectures(因此這個不能為空)的交集來確定,比如勤婚,你的Valid Architectures設(shè)置的支持arm指令集版本有:armv7/armv7s/arm64摹量,對應的Architectures設(shè)置的支持arm指令集版本有:armv7s,這時Xcode只會生成一個armv7s指令集的二進制包,默認為 Standard architectures(armv7,arm64),如果你想改的話缨称,自己在other中更改废亭。Build Active Architecture Only
指定是否只對當前連接設(shè)備所支持的指令集編譯
當其值設(shè)置為YES,這個屬性設(shè)置為yes具钥,是為了debug的時候編譯速度更快豆村,它只編譯當前的architecture版本,而設(shè)置為no時骂删,會編譯所有的版本掌动。 所以,一般debug的時候可以選擇設(shè)置為yes宁玫,release的時候要改為no粗恢,以適應不同設(shè)備。
如果打包的時候指令集32位和64位的都有欧瘪,那么在64位CPU上首先運行的是64位的指令集眷射,只有在iPhone5s(iOS7)及其以上才可以使用同時包含32位和64位的
文章摘抄
Xcode中armv7,armv7s,arm64,i386,x86_64
iOS關(guān)于armv7,armv7s,arm64,i386,x86_64
iOS 中的 armv7,armv7s,arm64,i386,x86_64 都是什么
iOS 指令集架構(gòu) armv6、armv7佛掖、armv7s妖碉、arm64、arm64e芥被、x86_64欧宜、i386