第一次做業-編譯原理概述

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

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

翻譯程序有兩種:一種是編譯程序,它將高級語言源程序一次性所有翻譯成目標程序,每次執行程序時,只要執行目標程序。另外一種是解釋程序,它的執行過程是翻譯一句執行一句,而且不會生成目標程序。優化

編譯程序是將高級語言的程序轉成機器語言;翻譯是把程序要實現的功能進行闡述spa

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

 

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

編譯程序的工做過程通常也能夠劃分爲五個階段:詞法分析、語法分析、語義分析與中間代碼產生、優化、目標代碼生成。xml

詞法分析的任務是:輸入源程序,對構成源程序的字符串進行掃描和分解,識別出一個個的單詞(亦稱單詞符號或簡稱符號)。開發

語法分析的任務是:在詞法分析的基礎上,根據語言的語法規則,把單詞符號串分解成各種語法單位(語法範疇),如「短語」、「句子」、「程序段」和「程序」等。經過語法分析,肯定整個輸入串是否構成語法上正確的「程序」。字符串

語義分析與中間代碼產生這一階段的任務是:對語法分析所識別出的各種語法範疇,分析其含義,並進行初步翻譯(產生中間代碼)。編譯器

優化的任務在於對前段產生的中間代碼進行加工變換,以期在最後階段能產生出更爲高效(省時間和空間)的目標代碼。

目標代碼生成的任務是:把中間代碼(或經優化處理以後)變換成特定機器上的低級語言代碼。

 

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

在編譯方式下,機器上運行的是與源程序等價的目標程序,源程序和編譯程序都再也不參與目標程序的執行過程,而在解釋方式下,解釋程序和源程序(或某種等價表示)要參與到程序的運行過程當中,運行程序的控制權在解釋程序。

 

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

如今的 Android 是 解釋執行 + 還算能夠的JIT + AOT 的模式。在方舟編譯器裏面,已經編譯好的APK,會經過靜態編譯的方式先轉換成機器碼再安裝,這實際上是AOT,無需麻煩的虛擬機,提高運行速度和效率。而且做爲開發者,還能夠根據不一樣的程序特色,選擇不一樣的編譯優化方案,不像安卓官方的方式使用統一的虛擬機方案。華爲方舟編譯器則是利用程序多線程運行的特色。方舟編譯器是AOT、中間層、JIT三種模式進行編譯,可以大幅度提升安卓軟件的安裝、運行速度。

相關文章
相關標籤/搜索