方舟編譯器可以幹什麼?_風聞
下雨不愁-2019-04-21 05:02
實在睡不着,瞎雞兒寫寫。
程序員寫的東西,叫做源程序,假設為test.C,裏面有各種C語句、調用其他源文件的方法的語句、調用庫函數的語句、調用系統API的語句以及各種正經的不正經的註釋及一些標記。
編譯器第一步需要將Car語句按照標記、設置翻譯成二進制的機器代碼,純01,此時有了test.obj。
第二步,將OBJ文件與各種調用的其他文件進行連接,生成可執行的二進制01文件。
GCC或者tc爾後link的操作。
後來的編譯器就不需要你再手動連接了,直接生成目標代碼。再後來還有了動態鏈接技術,即一些庫函數或者系統API不放在你的可執行文件裏,而是在運行時直接調用系統的二進制文件。
直觀的説,編譯器就是一個翻譯,你把你寫的文章給他,他負責給你翻譯成英文然後發行。
android下的java與此大差不差,區別在於,目標代碼或者説生成的結果不是二進制的機器碼,而是java虛擬機的字節碼。
但編譯器仍然是一個翻譯,把你寫的文章翻譯成對應國家的語言的文章。
好了,背景知識就是這樣吧。現在我們來看看華為這個方舟編譯器能幹啥:
1、在現有狀況下,可以針對海思CPU進行優化。海思CPU是ARM的一個實現,這個實現除了ARM要求的屬性之外,理所當然還有一些私有屬性不被支持和優化,那麼方舟編譯器就可以有針對性的對字節碼進行優化,從而在硬件投資固定的情況下,提高產品的性能。
2、當華為市佔率夠高時,可能選擇使用方舟進行編譯的APP會增多,對吧,我甚至可以嵌入到android studio裏作為編譯的一個可選插件,方便使用,打個勾的問題。
3、當使用方舟編譯的APP足夠多的時候,華為可以選擇翻譯到android下的java虛擬機上,也可以選擇翻譯到其他java虛擬機上,甚至可以選擇直接翻譯成機器碼,甚至可以選擇翻譯到其他玄武啊之類的操作系統上,程序員不需要過多介入,用户也不需要過度感知,無感切換操作系統。(當然,調用系統API語句及API的兼容等等大量工程上的細節還是少不了的)
説到底,編譯器本身是一個從程序員到機器的翻譯,它能提供無感切換操作系統,從而,它可以為華為切換操作系統提供漸進的可能性。