iOS 編譯時處理器架構選擇

2022-01-28 22:39:32 字數 943 閱讀 3682

先看看主流的ios裝置的架構

armv7

armv7s

arm64

再看看目前xcode8的預設設定

那麼能不能通過手動加入 i386 和 x86_64 來使得生成的程式即能在模擬器執行,又能在真機執行呢?這種情況一般出現在生成 library 或者 framework的時候。我用xcode8 測試的時候,如果加入i386的話會編譯報錯,具體原因需要研究。目前來說,可行的方法就是利用xcode2次編譯,分別生成模擬器的庫和真機的庫,再用lipo 命令 把2個庫的2進製檔案合成乙個庫。

說到了處理器架構,可能會想到bitcode。蘋果推出的bitcode,就是一種程式語言和2進製程式之間的中間語言,目的是上傳這個中間語言後,蘋果可以根據裝置需要,動態生成2進製程式,看起來有了這個bitcode,上面的設定是沒什麼必要了。但是,事實不是這樣。

這裡推薦一篇關於bitcode的文章:

這裡面說了:

然而bitcode他也不是完全獨立於處理器平台和呼叫約定的.暫存器的大小在指令集中是乙個相當重要的特性,眾所周知,64bit暫存器可以比32bit暫存器儲存更多的資料,生成64bit平台的bitcode和32bit平台的bitcode是明顯不同的,還有,呼叫約定可以根據函式定義或者函式呼叫來定義,這些可以確定函式的引數傳遞是傳暫存器值呢還是壓棧. 一些程式語言還有一些像sizeof(long

)這樣的預處理指令,這些將在bitcode生成之前前被翻譯.一般情況下,對於支援fastcc(fast calling convention)呼叫的64bit平台會生成與其一致的bitcode**.

說明即使使用了bitcode選項,也要生成不同架構的bitcode程式版本,目前的狀態是:bitcode只能在一定意義上輔助生成新的2進製程式,不能完全無視不同的cpu架構。

CPU處理器架構

系統有x64,x86與ia 64三種版本之分,分別用於不同的cpu。較老的cpu只能安裝x86版的系統,也就是我們常見的32位系統。因為微軟的緣故,32位系統在過去的很長一段時間內,佔據著桌面計算機的主流地位。64位系統能夠在較新的x86 64架構的cpu上執行。而ia 64則只能執行於intel的...

常見處理器架構

intel 常見伺服器cpu分類。現在的處理器技術發展真是日新月異,上一代產品還沒被大家分清,馬上就要被下一代產品替代了。在這裡根據個人的一些了解,幫大家做個劃分。一,xeon 至強 目前全部intel ia架構的雙路,四路伺服器,全部在採用xeon 至強 cpu,它是基於x86架構的一種伺服器專用...

處理器架構簡介

一 主要有如下架構 1 ia 32架構 英特爾32位元架構 英語 intel architecture,32 bit,縮寫為ia 32 常被稱為i386 x86 32或是x86,由英特爾公司推出的指令集架構,至今英特爾最受歡迎的處理器仍然採用此架構。它是x86架構的32位元延伸版本,首次應用在int...