編譯原理簡答題_第1頁
編譯原理簡答題_第2頁
編譯原理簡答題_第3頁
編譯原理簡答題_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、名詞解釋題:Display表: 嵌套層次顯示表由于過程嵌套允許內(nèi)層過程引用外層過程定義的數(shù)據(jù),因此,當一個過程運行時必須跟蹤它的所有外層過程的最新活動記錄起始地址, display表就是用于登記每個外層過程的最新活動記錄起始地址。LL(1)文法 若文法的任何兩個產(chǎn)生式A ® a | b都滿足下面兩個條件:(1)FIRST(a ) Ç FIRST(b ) = f;(2)若b Þ* e ,那么FIRST(a ) Ç FOLLOW( A ) = f。 我們把滿足這兩個條件的文法叫做LL(1)文法,其中的第一個L代表從左向右掃描輸入,第二個L表示產(chǎn)生最左推導(dǎo),1

2、代表在決定分析器的每步動作時向前看一個輸入符號。除了沒有公共左因子外,LL(1)文法還有一些明顯的性質(zhì),它不是二義的,也不含左遞歸。LR(0)分析器所謂LR(0)分析,是指從左至右掃描和自底向上的語法分析,且在分析的每一步,只須根據(jù)分析棧當前已移進和歸約出的全部文法符號,并至多再向前查看0個輸入符號,就能確定相對于某一產(chǎn)生式左部符號的句柄是否已在分析棧的頂部形成,從而也就可以確定當前所應(yīng)采取的分析動作 (是移進還是按某一產(chǎn)生式進行歸約等)。編譯程序大致有哪幾種開發(fā)技術(shù)?答案:(1)自編譯(2)交叉編譯 (3)自展 (4)移植:編譯程序的工作分為那幾個階段?答:詞法分析、語法分析和語義分析是對源

3、程序進行的分析(稱為編譯程序的前端) ,而中間代碼生成、代碼優(yōu)化和代碼生成三個階段合稱為對源程序進行綜合(稱為編譯程序的后端),它們從源程序的中間表示建立起和源程序等價的目標程序。編譯程序的實現(xiàn)應(yīng)考慮的問題有那些?答案:編譯程序的實現(xiàn)應(yīng)考慮:開發(fā)周期、目標程序的效率、可移植性、可調(diào)試性、可維護性、可擴充性等。編譯程序和高級語言有什么區(qū)別?答:用匯編語言或高級語言編寫的程序,必須先送入計算機,經(jīng)過轉(zhuǎn)換成用機器語言表示的目標程序(這個過程即編譯),才能由計算機執(zhí)行。執(zhí)行轉(zhuǎn)換過程的程序叫編譯程序。匯編程序是指沒有編譯過的匯編語言源文件。編譯程序轉(zhuǎn)換過的叫目標程序,也就是機器語言。 編譯程序的工作情況

4、有三種:匯編型、解釋型和編譯型。匯編型編譯程序用來將匯編語言編寫的程序,按照一一對應(yīng)的關(guān)系,轉(zhuǎn)換成用機器語言表示的程序。解釋型編譯程序?qū)⒏呒壵Z言程序的一個語句,先解釋成為一組機器語言的指令,然后立即執(zhí)行,執(zhí)行完了,取下一組語句解釋和執(zhí)行,如此繼續(xù)到完成一個程序止。用解釋型編譯程序,執(zhí)行速度很慢,但可以進行人和計算機的"對話",隨時可以修改高級語言的程序。BASIC語言就是解釋型高級語言。編譯型編譯程序?qū)⒓壵Z言編寫的程序,一次就會部翻譯成機器語言表示的程序,而且過程進行很快,在過程中,不能進行人機對話修改。FORTRAN語言就是編譯型高級語言。編譯過程中可進行的優(yōu)化如何分類?

5、答案:依據(jù)優(yōu)化所涉及的程序范圍,可以分為:局部優(yōu)化、循環(huán)優(yōu)化和全局優(yōu)化。詞法分析詞法分析的主要任務(wù)是從左向右掃描每行源程序的符號,按照詞法規(guī)則從構(gòu)成源程序的字符串中識別出一個個具有獨立意義的最小語法單位,并轉(zhuǎn)換成統(tǒng)一的內(nèi)部表示(token),送給語法分析程序。從優(yōu)化的范圍的角度,優(yōu)化可以分哪兩類?對循環(huán)的優(yōu)化可以有哪三種? 答:從優(yōu)化的范圍的角度,優(yōu)化可以分為局部優(yōu)化和全局優(yōu)化兩類;對循環(huán)的優(yōu)化有三種:循環(huán)不變表達式外提、歸納變量刪除與計算強度削減。對下列錯誤信息,請指出可能是編譯的哪個階段(詞法分析、語法分析、語義分析、代碼生成)報告的。(1) else 沒有匹配的if(2) 數(shù)組下標越界(

6、3) 使用的函數(shù)沒有定義(4) 在數(shù)中出現(xiàn)非數(shù)字字符答案:(1) 語法分析(2) 語義分析(3) 語法分析(4) 詞法分析何謂代碼優(yōu)化?進行優(yōu)化所需要的基礎(chǔ)是什么?答案:對代碼進行等價變換,使得變換后的代碼運行結(jié)果與變換前代碼運行結(jié)果相同,而運行速度加快或占用存儲空間減少,或兩者都有。優(yōu)化所需要的基礎(chǔ)是在中間代碼生成之后或目標代碼生成之后。何謂翻譯程序、編譯程序和解釋程序?答案:翻譯程序是指將用某種語言編寫的程序轉(zhuǎn)換成另一種語言形式的程序的程序,如編譯程序和匯編程序等。編譯程序是把用高級語言編寫的源程序轉(zhuǎn)換(加工)成與之等價的另一種用低級語言編寫的目標程序的翻譯程序。解釋程序是解釋、執(zhí)行高級語

7、言源程序的程序。劃分程序的基本塊時,確定基本塊的入口語句的條件是什么?答:程序第一個語句,或能由條件轉(zhuǎn)移語句或無條件轉(zhuǎn)移語句轉(zhuǎn)移到的語句,或緊跟在條件轉(zhuǎn)移語句后面的語句。計算機執(zhí)行用高級語言編寫的程序有哪些途徑?它們之間的主要區(qū)別是什么?答案:計算機執(zhí)行用高級語言編寫的程序主要途徑有兩種,即解釋與編譯。像Basic 之類的語言,屬于解釋型的高級語言。它們的特點是計算機并不事先對高級語言進行全盤翻譯,將其變?yōu)闄C器代碼,而是每讀入一條高級語句,就用解釋器將其翻譯為一條機器代碼,予以執(zhí)行,然后再讀入下一條高級語句,翻譯為機器代碼,再執(zhí)行,如此反復(fù)。總而言之,是邊翻譯邊執(zhí)行。像C,Pascal 之類的

8、語言,屬于編譯型的高級語言。它們的特點是計算機事先對高級語言進行全盤翻譯,將其全部變?yōu)闄C器代碼,再統(tǒng)一執(zhí)行,即先翻譯,后執(zhí)行。從速度上看,編譯型的高級語言比解釋型的高級語言更快。寄存器分配的原則是什么?答案:寄存器分配的原則是:(1) 當生成某變量的目標代碼時,盡量讓變量的值或計算結(jié)果保留在寄存器中,直到寄存器不夠分配時為止。(2) 當?shù)交緣K出口時,將變量的值存放在內(nèi)存中,因為一個基本塊可能有多個后繼結(jié)點或多個前驅(qū)結(jié)點,同一個變量名在不同前驅(qū)結(jié)點的基本塊內(nèi)出口前存放的寄存器可能不同,或沒有定值,所以應(yīng)在出口前把寄存器的內(nèi)容放在內(nèi)存中,這樣從基本塊外入口的變量值都在內(nèi)存中。(3) 對于在一個基

9、本塊內(nèi)后邊不再被引用的變量所占用的寄存器應(yīng)盡早釋放,以提高寄存器的利用效率。簡述編譯程序的工作過程。答:編譯程序的工作過程,是指從輸入源程序開始到輸出目標程序為止的整個過程,是非常復(fù)雜的,就其過程而言,一般可以劃分為五個工作階段:詞法分析,對構(gòu)成源程序的字符串進行掃描和分解,識別出一個個的單詞;語法分析,根據(jù)語言的語法規(guī)則,把單詞符號串分解成各類語法單位;語義分析與中間代碼產(chǎn)生,即對各類語法單位,分析其漢一并進行初步翻譯;代碼優(yōu)化,以期產(chǎn)生更高效的代碼;目標代碼生成,把中間代碼變換成特定機器上的低級語言指令形式。簡述代碼優(yōu)化的目的和意義。答:代碼優(yōu)化是盡量生成“好”的代碼的編譯階段。也就是要對

10、程序代碼進行一種等價變換,在保證變換前后代碼執(zhí)行結(jié)果相同的前提下,盡量使目標程序運行時所需要的時間短,同時所占用的存儲空間少。簡述自下而上的分析方法。 所謂自下而上分析法就是從輸入串開始,逐步進行“歸約”,直至歸約到文法的開始符號;或者說從語法樹的末端開始,步步向上“歸約”,直到根節(jié)點。決定目標代碼的因素有哪些?答案:決定目標代碼的因素主要取決于具體的機器結(jié)構(gòu)、指令格式、字長及寄存器的個數(shù)和種類,并與指令的語義和所用操作系統(tǒng)、存儲管理等都密切相關(guān)。又由于目標代碼的執(zhí)行效率在很大程度上依賴于寄存器的使用,所以目標代碼與寄存器的分配算法也有關(guān)。什么是句柄?什么是素短語?一個句型的最左直接短語稱為該

11、句型的句柄。(3分)素短語是這樣的一個短語,它至少包含一個終結(jié)符并且不包含更小的素短語。(3分)什么是語法制導(dǎo)翻譯?中間代碼通常有哪幾種主要形式?答案:由一個源語言、一個目標語言和一組翻譯規(guī)則組成,遮住規(guī)則可將任何源語言符號串翻譯成對應(yīng)的目標語言。主要形式: 三元式、 四元式 、逆波蘭式為什么在代碼生成時要考慮充分利用寄存器?答案:因為當變量值存在寄存器時,引用的變量值可直接從寄存器中取,減少對內(nèi)存的存取次數(shù),這樣便可提高運行速度。因此如何充分利用寄存器是提高目標代碼運行效率的重要途徑。一個典型的編譯程序通常由哪些部分組成?各部分的主要功能是什么?答案:一個典型的編譯程序通常包含 8 個組成部分,它們是詞法分析程序、語法分析程序、語義分析程序、中間代碼生成程序、中間代碼優(yōu)化程序、目標代碼生成程序、表格管理程序和錯誤處理程序。語法分析的主要任務(wù)是什么?常分為哪二類方法?答案:任務(wù)是在詞法分析的基礎(chǔ)上將單詞序列組合成各類語法短語 .常分為:自頂而下,自底而上二類方法。運行時的DISPLAY表的內(nèi)容是什么?它的作用是什么?答:DISPLAY表是嵌套層次顯示表。每當進入一個過程后,在建立它的活動記錄區(qū)的同時建立一張嵌套層次顯示表diapla

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論