網上能看到蘋果筆記本MAC把Intel的CPU換了自研的M1,這樣MacOs上的應用軟體要進行適配。我個人的理解是,這次換晶元,指令集由X86 CISC指令集換成了ARM的精簡指令集,所以操作系統MacOs需要進行適配。為什麼運行在操作系統之上的應用軟體也需要適配呢?只要操作系統暴露給應用軟體的API不變,應用軟體也不需要變吧?


你想的太簡單了,能跑是一回事情,跑得效率高能充分利用到CPU的各種特性又是一回事。

Intel剛出386支持保護模式需要軟體適配,出mmx需要軟體適配,出奔騰需要軟體適配,amf出64位架構也需要適配。

僅僅體現在能跑上那不叫適配,明白了不?


應用軟體除了使用操作系統曝露的API,也使用處理器用戶態的指令集。比如ADD,在x86和在ARM的指令集編碼是不一樣的。也有一此x86有的指令ARM沒有,所以換處理器架構,軟體要適配。


API介面不變,最好的情況應用軟體源碼不需要改動,但是需要使用ARM編譯器重新編譯成ARM格式的二進位程序(未適配前是X86二進位程序)。


這。。。

以前的Mac用的都是x86架構的處理器,指令集和現在的蘋果晶元是不一樣的,M1是arm指令集。

老的軟體都用x86指令集,軟體可以適配硬體,硬體要是適配軟體,那M1也不是現在的M1了。

M1的使命在於將現有的x86平臺的生態遷移到ARM。這是蘋果擅長的領域,畢竟iphone的處理器已經平穩運行了多年,而它釋放的性能優勢多年來也是有目共睹的。

蘋果在桌面系統上苦微軟久矣,而在移動端的軟體生態優勢如果可以利用起來的話,藉此機會翻身躋身桌面操作系統No.1不是夢。

另外牙膏廠的膏量和節奏不滿足蘋果的節奏,蘋果自己也想拜託英特爾的限制。畢竟經常打架不是個事。硬體用自己的可以進一步提高利潤,護城河更深,產品發布節奏更可控。

有了推硬體的理由,那隻能軟體適配M1咯。


因為應用程序不是完全運行在操作系統上,而是需要直接在CPU上直接運行的。

(編程顯然不是完全調API,而是需要你自己的邏輯的)


指令集和編譯器本身不一樣


你把源代碼和編譯後的可執行文件搞混了。api不變只能說源代碼不用變,軟體裏用的是平臺「原生」的指令集,操作系統只是調度軟體運行,最終還是要靠軟體自己在cpu上運行的,所以換cpu架構了軟體需要重新編譯,但是不見得你原來針對x64的代碼就能完美地重新編譯到amd64上,越是底層的代碼越是如此。所以所謂的適配你可以理解成軟體源代碼需要重新編譯,編譯問題少的能很快出適配版,比如ps;問題多的或者開發者懶的,Rosetta2轉譯也夠用


api只定義了介面的輸入輸出,實際運行還是要靠cpu,m1應該是arm v8.3架構,x64的可執行文件沒法直接在arm機器上跑。

代碼層面的適配可能有幾個原因:

1.軟體使用了x64內嵌彙編

2.使用了某些intel獨有的指令/特性

3.暫時沒想到...

至少來看,如果不用Rosetta2,代碼得重新編譯成arm架構的可執行文件。

(裡面有沒有其他坑沒研究過)


推薦閱讀:
相關文章