編譯原理教程 01緒論_第1頁
編譯原理教程 01緒論_第2頁
編譯原理教程 01緒論_第3頁
編譯原理教程 01緒論_第4頁
編譯原理教程 01緒論_第5頁
已閱讀5頁,還剩35頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、第1章緒論第一章 緒論編編 譯譯 技技 術術江蘇大學計算機學院計算機科學系江蘇大學計算機學院計算機科學系主講:年 軼第1章緒論第一章 引 論FTPFTP地址:地址:3用戶名:用戶名:nianyi密碼:密碼:123456上傳文件夾:上傳文件夾:up -“課程內容課程內容” -“班級班級”下載文件夾:下載文件夾:down -“課程內容課程內容”上傳文件壓縮包命名規(guī)則:班級上傳文件壓縮包命名規(guī)則:班級+學號(末學號(末2位)位)+姓名姓名 例如:例如:J計計080101許燕許燕,軟件軟件080101王鵬曉,網絡王鵬曉,網絡090101符丹符丹,嵌軟,嵌軟09010

2、1張巍張巍第1章緒論第一章 引 論學時與參考教材學時與參考教材學時學時:35+1035+10小時小時 參考教材參考教材1 1、Compilers:Principles,Techniques,andTools 龍書龍書 該書出的比較早,但里面講解的該書出的比較早,但里面講解的核心編譯核心編譯原理至今都沒原理至今都沒有變過,所以一直到今天,它的有變過,所以一直到今天,它的價值都非凡價值都非凡。 這本書最大的這本書最大的特點特點就是一開始就通過一個實際的小例子,就是一開始就通過一個實際的小例子,把編譯原理的把編譯原理的大致內容大致內容羅列出來,讓很多編譯原理的初學者羅列出來,讓很多編譯原理的初學者很

3、快心里有了個底很快心里有了個底,也知道為什么會有這些理論,怎么運用這也知道為什么會有這些理論,怎么運用這些理論。些理論。第1章緒論1977年,Alfred V. Aho和Jeffrey D. Ullman合作出版了Principles of Compiler Design,封面是一位騎士和一只龍,龍是綠色的,因此被稱為龍書或綠龍書。第1章緒論1986,原來的兩位作者,加上Ravi Sethi,升級了前一本書,書名為 Compilers:Principles, Techniques, andTools ,封面沿用騎士和龍,但龍是紅色的,因此被稱為龍書二或紅龍書。第1章緒論2006年底,龍書升級了

4、。作者增加了Monica S. Lam,名字與龍書二相同,封面依然沿用騎士和龍,但龍是紫色的,因此被稱為龍書三或紫龍書。第1章緒論第1章緒論2 2、Modern Compiler Design 中文名字叫做中文名字叫做現代編譯程序設計現代編譯程序設計,此書比較,此書比較關注的是編譯原理的實踐,書中給出了不少的實際程關注的是編譯原理的實踐,書中給出了不少的實際程序代碼,還有很多實際的編譯技術問題等等。序代碼,還有很多實際的編譯技術問題等等。 此書另外一個特點就是其此書另外一個特點就是其“現代現代”而字。在傳統而字。在傳統的編譯原理教材中,你是很少能看到如同的編譯原理教材中,你是很少能看到如同Ja

5、va中的中的“垃圾回收垃圾回收”等算法的。等算法的。 如果你如果你想想深入學習編譯原理的理論知識,那么你肯深入學習編譯原理的理論知識,那么你肯定得看前面那本定得看前面那本龍書龍書,如果你想自己動手做一個先進,如果你想自己動手做一個先進的編譯器,那么你的編譯器,那么你得看這本得看這本現代編譯程序設計現代編譯程序設計。第1章緒論第一章 引 論為什么要學習編譯原理? 一個一個高手高手的必經之路,可以說不懂編譯原理就的必經之路,可以說不懂編譯原理就寫不出好程序來。寫不出好程序來。 如果哪一個高手說他如果哪一個高手說他不會不會編譯原理,你大可編譯原理,你大可以認為他在以認為他在說謊說謊。 通過了解程序如

6、何從通過了解程序如何從源代碼源代碼經過一步步操作經過一步步操作最終到最終到目標代碼目標代碼,可以,可以幫助幫助我們更好的理解計算我們更好的理解計算機,有助于編寫好自己的代碼。機,有助于編寫好自己的代碼。 能能更深入更深入的了解編出來的代碼是怎樣被機器的了解編出來的代碼是怎樣被機器識別運行的,有助于你編程時的排查錯誤。識別運行的,有助于你編程時的排查錯誤。第1章緒論第一章 引 論 你可以把學習的你可以把學習的過程過程當作一種當作一種了解了解,或者當,或者當作一種對作一種對數據結構和算法數據結構和算法的應用。能夠讓你更加的應用。能夠讓你更加深入的理解程序在計算機中是如何運行,以及甚深入的理解程序在

7、計算機中是如何運行,以及甚至加深對硬件體系的認識。至加深對硬件體系的認識。 可以進一步加深對可以進一步加深對相關語言相關語言的理解,以及運的理解,以及運用。用。知道知道為什么要有這樣那樣的限制或者為什么為什么要有這樣那樣的限制或者為什么語言本身這么來設計。語言本身這么來設計。 當你看到一個當你看到一個開發(fā)環(huán)境開發(fā)環(huán)境,比如,比如Visual Studio正正在編譯執(zhí)行你的在編譯執(zhí)行你的VC+源代碼時,你知道它是如何源代碼時,你知道它是如何處理的。處理的。 第1章緒論 在解決在解決其他復雜其他復雜的問題時,可以借鑒編譯原理的的問題時,可以借鑒編譯原理的思想思想,不,不一定是編譯程序具體的一定是編

8、譯程序具體的實現模式實現模式,而是解決編譯問題時的思考,而是解決編譯問題時的思考方法。方法。 在在20世紀世紀50年代,編譯器的編寫一直被認為是年代,編譯器的編寫一直被認為是十分困難十分困難的的事情,第一事情,第一Fortran的編譯器據說花了的編譯器據說花了18年的時間才完成。年的時間才完成。 在人們嘗試編寫編譯器的同時,誕生了在人們嘗試編寫編譯器的同時,誕生了許多跟編譯相關的許多跟編譯相關的理論和技術理論和技術,而這些理論和技術比一個實際的編譯器本身價值,而這些理論和技術比一個實際的編譯器本身價值更大更大。 就猶如數學家們在解決著名的哥德巴赫猜想一樣,雖然沒就猶如數學家們在解決著名的哥德巴

9、赫猜想一樣,雖然沒有最終解決問題,但是其間誕生不少名著的相關數論。有最終解決問題,但是其間誕生不少名著的相關數論。第1章緒論1.1 程序設計語言和編譯程序程序設計語言和編譯程序 1.2 編譯程序的歷史及發(fā)展編譯程序的歷史及發(fā)展 1.3 編譯過程與編譯程序結構編譯過程與編譯程序結構1.4 編譯程序的開發(fā)編譯程序的開發(fā) 1.5 構造編譯程序所應具備的知識內容構造編譯程序所應具備的知識內容 第1章緒論第1章緒論計算機語言計算機語言低級語言低級語言面向機器面向機器 主要包括:主要包括:機器機器語言、語言、匯編匯編語言語言 特點特點:與特定的機器有關,功效高,但使用復雜、繁:與特定的機器有關,功效高,但

10、使用復雜、繁瑣、費時、易出錯。瑣、費時、易出錯。 高級語言高級語言 面向用戶面向用戶 如:如: Fortran、Pascal、C 、Java語言等語言等 特點:特點:不依賴具體機器,移植性好、對用戶要求低、不依賴具體機器,移植性好、對用戶要求低、易使用、易維護等。易使用、易維護等。 1.1 程序設計語言和編譯程序程序設計語言和編譯程序第1章緒論高級語言程序的執(zhí)行方式高級語言程序的執(zhí)行方式 編譯編譯 解釋解釋計算機系統的組成:計算機系統的組成: 裸機,系統程序裸機,系統程序(操作系統、操作系統、編譯程序編譯程序、解釋程序解釋程序、程序設計程序設計語言、連接裝配程序、系統實用程序等語言、連接裝配程

11、序、系統實用程序等),應用程序。,應用程序。 第1章緒論 編譯程序編譯程序就是指這樣一種程序,通過它能夠將用高級語就是指這樣一種程序,通過它能夠將用高級語言編寫的源程序轉換成與之在言編寫的源程序轉換成與之在邏輯上邏輯上等價的低級語言形式的等價的低級語言形式的目標程序,見圖目標程序,見圖11。圖圖1-1 編譯程序的功能編譯程序的功能第1章緒論一個高級語言程序的執(zhí)行通常分為兩個階段:一個高級語言程序的執(zhí)行通常分為兩個階段: 編譯階段編譯階段和和運行運行階段。階段。 編譯階段編譯階段將源程序變換成目標程序。將源程序變換成目標程序。 運行階段運行階段則由所生成的目標程序連同則由所生成的目標程序連同運行

12、系統運行系統(數據空間分數據空間分配子程序、標準函數程序等配子程序、標準函數程序等)接受程序的初始數據作為輸入,運接受程序的初始數據作為輸入,運行后輸出計算結果。行后輸出計算結果。圖圖1-2 源程序的編譯和運行階段源程序的編譯和運行階段第1章緒論如果編譯生成的目標程序是如果編譯生成的目標程序是匯編語言匯編語言形式的,那么在編譯形式的,那么在編譯與運行階段之間還要添加一個匯編階段,它將編譯生成的匯編與運行階段之間還要添加一個匯編階段,它將編譯生成的匯編語言目標程序再經過匯編程序變換成機器語言目標程序,如圖語言目標程序再經過匯編程序變換成機器語言目標程序,如圖13所示。所示。圖圖1-3源程序的編譯

13、、匯編和運行階段源程序的編譯、匯編和運行階段第1章緒論用高級語言編寫的程序也可通過用高級語言編寫的程序也可通過解釋程序解釋程序來執(zhí)行。解釋程來執(zhí)行。解釋程序也是一種翻譯程序,它將源程序作為輸入,序也是一種翻譯程序,它將源程序作為輸入,一條一條語句語句一條一條語語句地讀入并解釋執(zhí)行。句地讀入并解釋執(zhí)行。 解釋程序與編譯程序的解釋程序與編譯程序的主要區(qū)別主要區(qū)別是:編譯程序將源程序翻是:編譯程序將源程序翻譯成目標程序后再執(zhí)行該目標程序;而解釋程序則逐條譯成目標程序后再執(zhí)行該目標程序;而解釋程序則逐條讀出讀出源源程序中的語句程序中的語句并并解釋執(zhí)行,即在解釋程序的解釋執(zhí)行,即在解釋程序的執(zhí)行過程執(zhí)行

14、過程中中并不產并不產生目標程序生目標程序。典型的解釋型高級語言是。典型的解釋型高級語言是BASIC語言。語言。圖圖1-4 解釋程序的解釋執(zhí)行過程解釋程序的解釋執(zhí)行過程第1章緒論1.3 編譯過程和編譯程序結構編譯過程和編譯程序結構編譯程序的工作過程:編譯程序的工作過程:1.詞法分析階段詞法分析階段2.語法分析階段語法分析階段3.語義分析和中間代碼生成階段語義分析和中間代碼生成階段4.優(yōu)化階段優(yōu)化階段5.目標代碼生成階段目標代碼生成階段第1章緒論1詞法分析詞法分析詞法分析的詞法分析的任務任務是輸入源程序,對構成源程序的字符串是輸入源程序,對構成源程序的字符串進行掃描和分解,識別出進行掃描和分解,識

15、別出一個個單詞一個個單詞符號,如符號,如基本字基本字(if、for、begin等等)、標識符標識符、常數常數、運算符運算符和和界符界符(如如“(”、“)”、“=”、“;”)等,等, 將將所識別出的單詞所識別出的單詞用統一長度的用統一長度的標準形式標準形式(也稱內部碼也稱內部碼)來表來表示,以便于后繼語法工作的進行。示,以便于后繼語法工作的進行。 因此,詞法分析因此,詞法分析工作工作是將源程序中的是將源程序中的字符串字符串變換成變換成單詞符單詞符號流號流的過程。的過程。 詞法分析所詞法分析所遵循遵循的是語言的的是語言的構詞構詞規(guī)則(詞法規(guī)則)規(guī)則(詞法規(guī)則) 。第1章緒論2語法分析語法分析語法分

16、析的語法分析的任務任務是在是在詞法分析的基礎上詞法分析的基礎上,根據語言的,根據語言的語法語法規(guī)則規(guī)則(文法規(guī)則文法規(guī)則)把單詞符號流分解成各類語法單位把單詞符號流分解成各類語法單位(語法范疇語法范疇),如如“短語短語”、“子句子句”、“句子句子(語句語句)”、“表達式表達式”、“程序程序段段”和和“程序程序”等。等。 通過通過語法分析語法分析可以確定整個輸入串是否構成一個可以確定整個輸入串是否構成一個語法上正語法上正確的確的“程序程序”。 語法分析所遵循的是語言的語法分析所遵循的是語言的語法規(guī)則語法規(guī)則,語法規(guī)則,語法規(guī)則通常通常用用上上下文無關文法下文無關文法描述。描述。第1章緒論形式語言

17、學(形式語言學(代數語言學) 運用形式模型(抽象符號系統)對語言(包括人工語言和自然語言)進行理論上的分析和描寫。 描述語言有三種途徑:1窮舉 2文法 3自動機。 文法是指的產生過程,而自動機是指的識別過程。 一種語言,如果存在對它的識別過程,就一定存在對它的產生過程,反之亦然。 現行的形式語法系統是Chomsky于1956年為了描述自然語言而提出的一種理論模型。第1章緒論上下文無關文法上下文無關文法 文法文法描述語言的語法結構的形式規(guī)則(即語法規(guī)則)。 上下文無關文法上下文無關文法它是這樣一種文法,它所定義的語法范疇(或語法單位)是完全獨立于這種范疇可能出現的環(huán)境的。舉例: 程序語言中,當碰

18、到一個算術表達式時,對它“就事論事”進行處理,不必考慮它所處的上下文。 自然語言中,一個句子,一個詞,它們的語法性質和所處的上下文往往有密切的關系。第1章緒論3語義分析和中間代碼生成語義分析和中間代碼生成這一階段的這一階段的任務任務是對各類不同是對各類不同語法范疇語法范疇按按語言的語義語言的語義進行進行初初步翻譯步翻譯,包含兩個方面的工作:,包含兩個方面的工作: 一是對每種語法范疇進行一是對每種語法范疇進行靜態(tài)語義檢查靜態(tài)語義檢查,如變量是否定義、類,如變量是否定義、類型是否正確等;型是否正確等; 二是在二是在語義檢查正確語義檢查正確的情況下進行中間代碼的翻譯。的情況下進行中間代碼的翻譯。 中

19、間代碼中間代碼是是介于介于高級語言的語句和低級語言的指令之間的一高級語言的語句和低級語言的指令之間的一種獨立于具體硬件的記號系統,它既有一定程度的抽象,又與低種獨立于具體硬件的記號系統,它既有一定程度的抽象,又與低級語言的指令十分接近,因此轉換為目標代碼比較容易。級語言的指令十分接近,因此轉換為目標代碼比較容易。 把語法范疇翻譯成中間代碼把語法范疇翻譯成中間代碼所遵循所遵循的是的是語言的語義規(guī)則語言的語義規(guī)則,常見,常見的中間代碼有的中間代碼有四元式、三元式、間接三元式和逆波蘭記號四元式、三元式、間接三元式和逆波蘭記號等。等。第1章緒論4優(yōu)化優(yōu)化優(yōu)化的任務是對前階段產生的中間代碼進行等價變換或

20、改優(yōu)化的任務是對前階段產生的中間代碼進行等價變換或改造,以期獲得造,以期獲得更為高效更為高效(節(jié)省時間和空間節(jié)省時間和空間)的目標代碼。的目標代碼。 常用的常用的優(yōu)化措施優(yōu)化措施有刪除冗余運算、刪除無用賦值、合并已知有刪除冗余運算、刪除無用賦值、合并已知量、循環(huán)優(yōu)化等。量、循環(huán)優(yōu)化等。 例如,其值例如,其值并不隨循環(huán)并不隨循環(huán)而發(fā)生變化的運算可提到進入循環(huán)前而發(fā)生變化的運算可提到進入循環(huán)前計算一次,而不必在循環(huán)中每次循環(huán)都進行計算。優(yōu)化所遵循計算一次,而不必在循環(huán)中每次循環(huán)都進行計算。優(yōu)化所遵循的原則是程序的等價變換規(guī)則。的原則是程序的等價變換規(guī)則。第1章緒論5目標代碼生成目標代碼生成這一階段

21、的任務是把中間代碼這一階段的任務是把中間代碼(或經優(yōu)化處理之后或經優(yōu)化處理之后)變換成變換成特特定機器上定機器上的的機器語言程序或匯編語言程序機器語言程序或匯編語言程序,實現最終的翻譯工作。,實現最終的翻譯工作。 此工作因為此工作因為目標語言目標語言的關系而十分的關系而十分依賴硬件系統依賴硬件系統,即如何充,即如何充分利用機器現有的寄存器,合理地選擇指令,生成盡可能短且有分利用機器現有的寄存器,合理地選擇指令,生成盡可能短且有效的目標代碼,這些都與目標機器的硬件結構有關。效的目標代碼,這些都與目標機器的硬件結構有關。上述編譯過程的五個階段是編譯程序工作時的動態(tài)特征,編上述編譯過程的五個階段是編

22、譯程序工作時的動態(tài)特征,編譯程序的結構可以按照這五個階段的任務分模塊進行設計。譯程序的結構可以按照這五個階段的任務分模塊進行設計。第1章緒論圖圖15 編譯程序結構示意編譯程序結構示意 第1章緒論編譯過程中源程序的編譯過程中源程序的各種信息各種信息被保留在不同的表格里,編被保留在不同的表格里,編譯各階段的工作都譯各階段的工作都涉及涉及到構造、查找或更新有關的到構造、查找或更新有關的表格表格,編譯,編譯過程的過程的絕大部分時間都絕大部分時間都用在造表、查表和更新表格的事務上,用在造表、查表和更新表格的事務上,因此,編譯程序中還應包括一個因此,編譯程序中還應包括一個表格管理程序表格管理程序。出錯處理

23、出錯處理與編譯的各個階段都有聯系,與前三個階段的聯與編譯的各個階段都有聯系,與前三個階段的聯系尤為密切。系尤為密切。出錯處理程序應在出錯處理程序應在發(fā)現錯誤后,將錯誤的有關信發(fā)現錯誤后,將錯誤的有關信息如錯誤類型、出錯地點等向用戶報告。此外,為了盡可能多息如錯誤類型、出錯地點等向用戶報告。此外,為了盡可能多地發(fā)現錯誤,應在發(fā)現錯誤后還能繼續(xù)編譯下去,以便發(fā)現更地發(fā)現錯誤,應在發(fā)現錯誤后還能繼續(xù)編譯下去,以便發(fā)現更多的錯誤。多的錯誤。第1章緒論1.4 編譯程序的開發(fā)編譯程序的開發(fā)編譯程序的開發(fā)常常采用編譯程序的開發(fā)常常采用自編譯自編譯、交叉編譯交叉編譯、自展和移植等自展和移植等技術實現。技術實現

24、。1自編譯自編譯用某種高級語言書寫自己的編譯程序稱為自編譯。用某種高級語言書寫自己的編譯程序稱為自編譯。 例如,假定例如,假定A機器上已有一個機器上已有一個PASCAL語言可以運行,則語言可以運行,則可以可以用用PASCAL語言語言編寫編寫出一個功能出一個功能更強的更強的PASCAL語言編譯程序語言編譯程序,然后借助于原有的然后借助于原有的PASCAL編譯程序對新編寫的編譯程序對新編寫的PASCAL編譯程編譯程序進行編譯,從而在編譯后即得到一個能在序進行編譯,從而在編譯后即得到一個能在A機器上運行的功能機器上運行的功能更強的更強的PASCAL編譯程序。編譯程序。第1章緒論2交叉編譯交叉編譯交叉

25、編譯交叉編譯是指用是指用A機器上的編譯程序來產生可在機器上的編譯程序來產生可在B機器上運機器上運行的目標代碼。行的目標代碼。 例如,若例如,若A機器上已有機器上已有C語言語言可以運行,則可用可以運行,則可用A機器中的機器中的C語言書寫一個編譯程序,它的源程序是語言書寫一個編譯程序,它的源程序是C語言程序,而產生的語言程序,而產生的目標程序則是基于目標程序則是基于B機器的,即機器的,即能夠在能夠在B機器上機器上執(zhí)行的低級語言執(zhí)行的低級語言程序。程序。以上兩種方法都以上兩種方法都假定假定已經有了一個系統程序設計語言可以已經有了一個系統程序設計語言可以使用。使用。第1章緒論3自展自展自展的方法是:自

26、展的方法是:首先首先確定一個非常簡單的核心語言確定一個非常簡單的核心語言L0,然后,然后用用機器語言或匯編語言機器語言或匯編語言書寫出它的編譯程序書寫出它的編譯程序T0;再把語言;再把語言L0擴充擴充到到L1,此時有,此時有L0L1,并用,并用L0編寫編寫L1的編譯程序的編譯程序T1(即自編譯即自編譯);然后再把語言然后再把語言L1擴充為擴充為L2,此時有,此時有L1L2,并用,并用L1編寫編寫L2的編的編譯程序譯程序T2這樣不斷擴展下去,直到完成所要求的編譯程序這樣不斷擴展下去,直到完成所要求的編譯程序為止。為止。第1章緒論4移植移植移植移植是指是指A機器上的某種高級語言的編譯程序機器上的某

27、種高級語言的編譯程序稍加稍加改動后能改動后能夠在夠在B機器上運行。一個程序若能較容易地從機器上運行。一個程序若能較容易地從A機器上搬到機器上搬到B機器機器上運行,則稱該程序是可移植的。移植具有一定的局限性。上運行,則稱該程序是可移植的。移植具有一定的局限性。用系統程序設計語言來書寫用系統程序設計語言來書寫編譯程序編譯程序雖然縮短了開發(fā)周期并雖然縮短了開發(fā)周期并提高了編譯程序的質量,但提高了編譯程序的質量,但實現的自動化實現的自動化程度不高。實現編譯程程度不高。實現編譯程序的序的最高境界最高境界是能夠有一個自動生成編譯程序的軟件工具,只要是能夠有一個自動生成編譯程序的軟件工具,只要把把源程序的定

28、義源程序的定義以及機器語言的以及機器語言的描述描述輸入到該軟件中,就能自動輸入到該軟件中,就能自動生成這個語言的編譯程序,如圖生成這個語言的編譯程序,如圖16所示。所示。第1章緒論圖16 編譯程序自動生成示意第1章緒論1.5 構造編譯程序所應具備的知識內容構造編譯程序所應具備的知識內容對被編譯的對被編譯的源語言源語言(如如C、PASCAL等等),要,要深刻理解深刻理解其結其結構構(語法語法)和含義。和含義。對目標機器的對目標機器的硬件和指令系統硬件和指令系統有深刻的了解。有深刻的了解。熟練掌握熟練掌握編譯方法編譯方法。第1章緒論(1) 對被編譯的對被編譯的源語言源語言(如如C、PASCAL等等

29、),要,要深刻理解深刻理解其其結構結構(語法語法)和含義。例如,下面的和含義。例如,下面的for循環(huán)語句:循環(huán)語句: for(i=1;i=10+i;i+) x=x+1; 就存在對就存在對循環(huán)終值循環(huán)終值的理解問題。的理解問題。 一種一種理解理解是以是以第一次第一次進入進入for循環(huán)的循環(huán)的i值計算出值計算出循環(huán)終值循環(huán)終值,此,此循環(huán)終值在循環(huán)中不再改變,也即循環(huán)終值為循環(huán)終值在循環(huán)中不再改變,也即循環(huán)終值為11; 另一種另一種理解理解則是循環(huán)終值表達式則是循環(huán)終值表達式10+i中的中的i值隨循環(huán)在不斷值隨循環(huán)在不斷地改變,此時地改變,此時for語句將出現死循環(huán)。語句將出現死循環(huán)。 如如TUR

30、BO PASCAL就是按第一種語義進行翻譯的,而就是按第一種語義進行翻譯的,而TURBO C則是按第二種語義翻譯的。此外,如果出了循環(huán)后則是按第二種語義翻譯的。此外,如果出了循環(huán)后還要引用還要引用i值,那么這個值,那么這個i值究竟是值究竟是循環(huán)終值循環(huán)終值還是還是循環(huán)終值加循環(huán)終值加1?因此,對語義的不同理解可以得到不同的編譯程序。因此,對語義的不同理解可以得到不同的編譯程序。第1章緒論(2) 必須對目標機器的必須對目標機器的硬件和指令系統硬件和指令系統有深刻的了解。有深刻的了解。 例如,產生兩個數相加的指令在例如,產生兩個數相加的指令在8086/8088匯編中假定用下面匯編中假定用下面兩種兩種指令實現:指令實現:ADD AX,06或或ADD BX,06 粗略看來,這兩條加法指令除了粗略看來,這兩條加法指令除了寄存器寄存器不同外沒有本質上的差不同外沒有

溫馨提示

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

評論

0/150

提交評論