2019-09-04 11:19:07編程
1)簡述編譯程序與翻譯程序、彙編程序的聯繫與區別。多線程
編譯程序:把一種語言書寫的程序翻譯成彙編語言或機器語言那樣的低級語言。優化
翻譯程序:把一種語言書寫的程序翻譯成與之等價的另外一種語言的目標程序。spa
彙編程序:把彙編語言書寫的程序翻譯成與之等價的機器語言程序的翻譯程序。線程
三者都是對語言的翻譯過程,目的就是把程序翻譯成計算機可以識別的語言。翻譯
2)編譯過程包括哪幾個主要階段及每一個階段的主要功能。開發
1.詞法分析
這個階段的主要任務就是從左到右一個字符一個字符的讀入源程序,對構成源程序
的字符流進行掃描和分解,從而識別出一組緊密相連的zfu的集體含義。
2.語法分析
這個階段的主要任務就是在詞法分析的基礎上將單詞序列分解成各種語法短語。
3.語義分析
語義分析是審查源程序有無語義錯誤,爲代碼生成階段收集類型信息。
4.中間代碼生成
在進行了上述的語法分析和語義分析階段以後,有的編譯程序將源程序變成一種內部形式,
這種內部形式表述形式就是中間代碼。
5.代碼優化
對中間代碼進行變化和改造,使生成的目標代碼更爲高效。
6.目標代碼生成
這個階段的任務就是把中間代碼變換成特定機器上的絕對指令代碼或可重定位的指令代碼或
彙編指令代碼。編譯器
3)簡述解釋程序與編譯程序的區別。編譯
編譯程序是先編譯程序生成目標程序,再運行程序進行輸入輸出,解釋程序省略生成目標程
序的步驟。社區
4)瞭解新開源的華爲方舟編譯器(https://www.openarkcompiler.cn/home),理解並談談
它的基本思想與採用的技術路線,以及它對安卓軟件生態會有什麼影響。
基本思想:採起了靜態編譯的方式,鑲嵌於系統的底層,將全部的代碼都提早編譯成機器碼,使程序直接在手機CPU上運
行。同時利用多線程的原理,使程序一邊運行邊回收垃圾,程序運行不中斷,垃圾回收不停,
提升了cpu的運行效率
技術路線:
支持多語言聯合優化的編譯,在面對採用混合語言開發的安卓應用,方舟編譯器能夠在開發環
境中編譯成統一的流程,經過統一的程序表示和優化來執行,效率更高。
對安卓軟件生態的影響:
華爲方舟編譯器採起了靜態編譯的方式,將現有的一邊使用一邊翻譯的過程高效化,大幅度縮
減設備讀懂執行代碼的過程,從而最終得到更加高效的編譯語言速度,使得用戶指令響應速度
得以提高,手機運行應用APP天然也就更迅速不卡頓了!若是說華爲方舟編譯器的誕生僅僅是爲
了服務於華爲本身,即使有着確實不錯的體驗效果,也不能稱之爲具備歷史性意義的一步。在華
爲方舟編譯器對外公佈之時,華爲就同時宣佈將這一技術開源,而且熱切但願有更多的應用程序
廠商,安卓手機廠商,開源社區的開發者一同加入進來。也就是說華爲方舟編譯器的存在價值,
毫不僅僅只是爲了華爲本身的前進。