iOS指令集總結(jié)

指令集

通常會把CPU的擴展指令集稱為”CPU的指令集”(因為基本的次慢,類似加減的指令似乎是必須被CPU所支持的指令)。每款CPU在設(shè)計時就規(guī)定了一系列與其硬件電路相配合的指令集致盟。

Arm處理器

Arm處理器,因為其低功耗和小尺寸而聞名,幾乎所有的手機處理器都基于arm情连,其在嵌入式系統(tǒng)中的應用非常廣泛,它的性能在同等功耗產(chǎn)品中也很出色览效。想了解ARM指令集的請點擊這里却舀。

iPhone指令集

蘋果A7處理器支持兩個不同的指令集:32位ARM指令集(armv6|armv7|armv7s)和64位ARM指令集(arm64),i386|x86_64 是Mac處理器的指令集锤灿,i386是針對intel通用微處理器32架構(gòu)的挽拔。x86_64是針對x86架構(gòu)的64位處理器。當使用iOS模擬器的時候會遇到i386|x86_64但校,iOS模擬器沒有arm指令集螃诅。

不同型號的iPhone都使用的是什么指令集:

ARMv8-A = iPhone6s,iPhone6s Plus,iPad Air2,Apple TV4,iPad Air,iPhone6 ? ? ????

ARMv8/ARM64 = iPhone5s, iPad Air, Retina iPad MiniARMv7s = iPhone5, iPhone5c, iPad4

ARMv7? = iPhone3GS, iPhone4, iPhone4S, iPod3G/4G/5G, iPad, iPad2, iPad3, iPad Mini??

ARMv6? = iPhone, iPhone3G, iPod1G/2G


Xcode中關(guān)于生成二進制包指令集相關(guān)的設(shè)置

主要有以下三個:

Architectures

官方文檔說明:

Space-separated?list?of?identifiers.?Specifies?the?architectures?(ABIs,?processor?models)?to?which?the?binary?is?targeted.?When?this?build?setting?specifies?more?than?one?architecture,?the?generated?binary?may?contain?object?code?for?each?of?the?specified?architectures.

該編譯選項指定了工程將被編譯成支持哪些指令集,支持指令集是通過編譯生成對應的二進制數(shù)據(jù)包實現(xiàn)的,如果支持的指令集數(shù)目有多個术裸,就會編譯出包含多個指令集代碼的數(shù)據(jù)包倘是,造成最終編譯的包很大。

Valid Architectures

官方文檔說明:

Space-separated?list?of?identifiers.?Specifies?the?architectures?for?which?the?binary?may?be?built.?During?the?build,?this?list?is?intersected?with?the?value?of?ARCHS?build?setting;?the?resulting?list?specifies?the?architectures?the?binary?can?run?on.?If?the?resulting?architecture?list?is?empty,?the?target?generates?no?binary.

該編譯項指定可能支持的指令集袭艺,該列表和Architectures列表的交集搀崭,將是Xcode最終生成二進制包所支持的指令集。

比如猾编,你的Valid Architectures設(shè)置的支持arm指令集版本有:armv7/armv7s/arm64瘤睹,對應的Architectures設(shè)置的支持arm指令集版本有:armv7s,這時Xcode只會生成一個armv7s指令集的二進制包。

Build Active Architecture Only

官方文檔說明:

Boolean?value.?Specifies?whether?the?product?includes?only?object?code?for?the?native?architecture.

該編譯項用于設(shè)置是否只編譯當前使用的設(shè)備對應的arm指令集。

當該選項設(shè)置成YES時,你連上一個armv7指令集的設(shè)備,就算你的Valid Architectures和Architectures都設(shè)置成armv7/armv7s/arm64执虹,還是依然只會生成一個armv7指令集的二進制包。

當然該選項起作用的前提是你的Xcode必須成功連接了調(diào)試設(shè)備习霹。如果你沒有任何活躍設(shè)備暇屋,即Xcode沒有成功連接調(diào)試設(shè)備,就算該設(shè)置項設(shè)置成YES依然還會編譯Valid Architectures和Architectures指定的二進制包攘轩。

通常情況下叉存,開發(fā)測試都是在 Debug模式下,所以該編譯選項在Debug模式都設(shè)成YES度帮,這樣在測試時只編譯一份指令集歼捏,有效提高開發(fā)效率。

Release模式為發(fā)布模式笨篷,需要支持各種設(shè)備指令集瞳秽,所以設(shè)置為NO。

說明:

指令集都是可以向下兼容的

比如率翅,你的設(shè)備是ARMv8指令集练俐,那么它也可以兼容運行比armv7s版本低的指令集:armv7、armv6


關(guān)于指令集的常見問題:

1.導入靜態(tài)庫后編譯報錯,Undefined symbols for architecture x86_64:

原因:

1:可能是靜態(tài)庫中不包含這個類冕臭。

2:靜態(tài)庫工程可能沒有鏈接到應用腺晾。

3: ? 靜態(tài)庫不支持模擬器運行;

解決辦法:

1:查看靜態(tài)庫里面是否存在這個類辜贵。

2:Build Phases中沒有添加Link Binary With Libraries 中添加此靜態(tài)庫悯蝉。

3: ?在真機上運行進行測試(??);或者對靜態(tài)庫進行修改托慨,使其支持模擬器的運行鼻由,在靜態(tài)庫target的build Settings中設(shè)置Valid Architectures為armv7 arm64 armv7s i386 x86_64

2.?使用 lipo -info 指令查看靜態(tài)庫支持的指令集

? ? ?如在命令行中輸入: lipo -info ?/test/libFireflyUI.a

3.使用lipo -create指令來合并支持真機和模擬器的靜態(tài)庫

如在命令行中輸入:lipo -create?

/Users/jinyy/Downloads/Release/iPhone_Device//libs/libFireflyUI.a

/Users/jinyy/Downloads/Release/iPhone_Simulator//libs/libFireflyUI.a

-output? /Users/jinyy/Downloads/Release/uinion/libFireflyUI.a












最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子嗡靡,更是在濱河造成了極大的恐慌跺撼,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件讨彼,死亡現(xiàn)場離奇詭異歉井,居然都是意外死亡,警方通過查閱死者的電腦和手機哈误,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進店門哩至,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人蜜自,你說我怎么就攤上這事菩貌。” “怎么了重荠?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵箭阶,是天一觀的道長。 經(jīng)常有香客問我戈鲁,道長仇参,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任婆殿,我火速辦了婚禮诈乒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘婆芦。我一直安慰自己怕磨,他們只是感情好,可當我...
    茶點故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布消约。 她就那樣靜靜地躺著肠鲫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪或粮。 梳的紋絲不亂的頭發(fā)上导饲,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天,我揣著相機與錄音被啼,去河邊找鬼帜消。 笑死,一個胖子當著我的面吹牛浓体,可吹牛的內(nèi)容都是我干的泡挺。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼命浴,長吁一口氣:“原來是場噩夢啊……” “哼娄猫!你這毒婦竟也來了贱除?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤媳溺,失蹤者是張志新(化名)和其女友劉穎月幌,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體悬蔽,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡扯躺,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了蝎困。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片录语。...
    茶點故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖禾乘,靈堂內(nèi)的尸體忽然破棺而出澎埠,到底是詐尸還是另有隱情,我是刑警寧澤始藕,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布蒲稳,位于F島的核電站,受9級特大地震影響伍派,放射性物質(zhì)發(fā)生泄漏江耀。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一拙已、第九天 我趴在偏房一處隱蔽的房頂上張望决记。 院中可真熱鬧摧冀,春花似錦倍踪、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至椒惨,卻和暖如春缤至,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背康谆。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工领斥, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人沃暗。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓月洛,卻偏偏與公主長得像,于是被迫代替她去往敵國和親孽锥。 傳聞我的和親對象是個殘疾皇子嚼黔,可洞房花燭夜當晚...
    茶點故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容