做業一——編譯原理概述

1)簡述編譯程序與翻譯程序、彙編程序的聯繫與區別。html

  編譯程序是先完整編譯後運行的程序,如C、C++等;算法

  翻譯程序是指把高級語言源程序翻譯成機器語言源程序(目標代碼)的軟件。編程

  彙編程序也是一種語言翻譯程序,它把彙編語言源程序翻譯成機器語言程序。性能

  編譯程序與彙編程序的區別:若是源語言是諸如C、C++、Java等「高級語言」,而目標語言是諸如彙編語言或機器語言之類的「低級語言」,這樣的一個翻譯程序稱爲編譯程序。若是源語言是彙編語言,而目標語言是機器語言,這樣的一個翻譯程序稱爲彙編程序。學習

2)編譯過程包括哪幾個主要階段及每一個階段的主要功能。優化

  編譯過程劃分紅詞法分析、語法分析、語義分析、中間代碼生成、代碼優化生成、中間代碼生成、代碼優化和目標代碼生成6個階段。.net

  每一個階段的主要功能以下:翻譯

  a. 詞法分析htm

  主要功能:從左到右一個字符一個字符地讀入源程序,對構成源程序的字符流進行掃描和分解,從而識別出一個個單詞(一些場合下也稱單詞符號或符號)。對象

  b. 語法分析

  主要功能:在詞法分析的基礎上將單詞序列分解成各種語法短語,如「程序」、「語句」、「表達式」等。

  c. 語義分析

  主要功能:進行類型審查,審查每一個算符是否具備語言規範容許的運算對象,當不符合語言規範時,編譯程序應報告錯誤。

  d. 中間代碼

  主要功能:根據語義規則產生一種介於源語言與目標代碼之間的一種中間代碼。

  e. 代碼優化

  主要功能:對前一階段產生的中間代碼進行變換或進行改造,目的是使生成的目標代碼更爲高效,即省時間和省空間。

  f. 目標代碼生成

  主要功能:把中間代碼變換成特定機器上的絕對指令代碼或可重定位的指令代碼或彙編指令代碼。

3)簡述解釋程序與編譯程序的區別。

  解釋程序接受某高級語言的一個語言輸入,進行解釋並控制計算機執行,立刻獲得這句的執行結果,而後再接受下一句。沒有區分編譯與執行,執行程序時不產生中間代碼,直接給出運行結果。

  編譯程序專指將高級語言轉換爲低級語言。源程序通過編譯程序以後生成目標程序,再獲得執行結果。

4)瞭解新開源的華爲方舟編譯器(https://www.openarkcompiler.cn/home),理解它的基本思想與採用的技術路線,談談它對安卓軟件生態會有什麼影響。

  基本思想:

  方舟編譯器則是在開發的時候就已經完成了靜態編譯,不須要依賴手機自己編譯。同時,方舟編譯器還提供了更高效的內存回收機制。因爲不須要通過虛擬機,應用在運行過程當中不須要暫停,同時隨時回收內存,而不是將垃圾堆在一塊兒回收。方舟編譯器對代碼進行優化,爲程序帶來更高的性能。而且其學習和使用成本低。

  採用的技術路線:

  支持多語言聯合優化的編譯,在面對採用混合語言開發的安卓應用,方舟編譯器能夠在開發環境中編譯成統一的流程,經過統一的程序表示和優化來執行,效率更高。

  對安卓生態的影響:

  華爲方舟編譯器成爲了安卓生態圈中企業的領頭羊,在新技術的開發方面已經遠遠超過了國內外其餘電子科技企業。華爲方舟編譯器的開源,將憑其一己之力帶動整個安卓生態圈的發展,爲企業之間的競爭、人才的發展、安卓生態的成長起推波助瀾的做用。不管是手機廠商,仍是應用開發者均可以使用方舟編譯器來優化應用的性能。安卓生態圈被華爲方舟編譯器打破了原有的禁錮,突破手機機能限制,根據不一樣的應用採用不一樣的編譯和優化算法,提升了應用執行效率,爲廣大的用戶提供更加愉快的體驗。

 

參考資料:http://www.leikeji.com/article/25904

     https://www.cnblogs.com/zdcaolei/archive/2012/04/04/2432094.html

     https://blog.csdn.net/IWGoo/article/details/85528562

相關文章
相關標籤/搜索