導航:首頁 > 源碼編譯 > 控制語句翻譯編譯原理

控制語句翻譯編譯原理

發布時間:2022-09-11 17:55:50

『壹』 編譯原理的實質

計算機程序編譯原理的實質就是把程序員員容易理解的高級語言程序代碼流翻譯成計算機可執行的機器指令代碼流。可以使用「一斷、二比、三譯」形象說明實質。
1、斷。按照語言的語法規則掃描斷詞,結合文法詞典把程序字元串流分解成為計算機語言能夠識別的基本單元(標識詞、運算符)。
2、比。從程序流中找出擴展標識詞的定義,建立標識詞結構,放入文法詞典,服務於新的定義和函數程序代碼的編譯。程序語句、表達式裡面使用的標識可以從詞典中比較找到。
3、譯。把函數程序文本字元串流中的算術表達式、賦值語句、控制語句翻譯成為計算機機器語言二進制代碼流。
4、組裝函數翻譯後的二進制代碼流,明確數據空間地址和大小,生成計算機裸機或操作系統可以執行目標代碼。

『貳』 C語言編譯原理是什麼

編譯共分為四個階段:預處理階段、編譯階段、匯編階段、鏈接階段。

1、預處理階段:

主要工作是將頭文件插入到所寫的代碼中,生成擴展名為「.i」的文件替換原來的擴展名為「.c」的文件,但是原來的文件仍然保留,只是執行過程中的實際文件發生了改變。(這里所說的替換並不是指原來的文件被刪除)

2、匯編階段:

插入匯編語言程序,將代碼翻譯成匯編語言。編譯器首先要檢查代碼的規范性、是否有語法錯誤等,以確定代碼的實際要做的工作,在檢查無誤後,編譯器把代碼翻譯成匯編語言,同時將擴展名為「.i」的文件翻譯成擴展名為「.s」的文件。

3、編譯階段:

將匯編語言翻譯成機器語言指令,並將指令打包封存成可重定位目標程序的格式,將擴展名為「.s」的文件翻譯成擴展名為「.o」的二進制文件。

4、鏈接階段:

在示例代碼中,改代碼文件調用了標准庫中printf函數。而printf函數的實際存儲位置是一個單獨編譯的目標文件(編譯的結果也是擴展名為「.o」的文件),所以此時主函數調用的時候,需要將該文件(即printf函數所在的編譯文件)與hello world文件整合到一起,此時鏈接器就可以大顯神通了,將兩個文件合並後生成一個可執行目標文件。

『叄』 編譯原理(C\C#)

分數少 看著一大片 覺得沒有意思

『肆』 為什麼handle會被翻譯成句柄

可能是當年的大佬覺得計算機語言也是「語句」,控制語句對象,則可稱之為句柄。之前的一些翻譯害死一批善良的人。例如神句「金銀天然不是貨幣,但貨幣天然是金銀」,問題是TMD很多考題還喜歡用這句話。明明就是ZB的翻譯。如果翻譯成「金銀原本並不被當作貨幣,但貨幣誕生時就是金銀充當的」你就會非常清楚他在講什麼。MLGZZ,裝逼害死人!!

『伍』 編譯原理中的拉鏈和回填到底什麼意思

回填技術是指控制語句中布爾表達式翻譯成四元式序列時,有的轉移地址不能在產生這些四元式的同時得知,需要在適當的時候回填這個地址。 拉鏈技術是指為了記錄需要回填地址的四元式,把需要回填E•ture的四元式拉成一條鏈,稱為「真鏈」;把需...

『陸』 編譯原理 把下面程序段翻譯成四元式序列

四元式類似於三地址指令:波蘭式。
0:(=,M,—,A); 簡單賦值表達式翻譯:a = m;
1:(=,N,—,B); B=N;
2:(<,A,B,4) ; 控制語句翻譯 :IF A<B GOTO 4;
3:(jump,—,—,6); 直接轉移語句;JUMP TO 6;
4:(=,N,—,T); T=N;
5:(jump,—,—,7) jump to 7;
6:(=,M,—,T) T=M;
7:(=,T,—,C). C=T;

『柒』 求南航計算機應用技術專業考研專業課和參考書

專業課有:

業務課一 --> 301數學一
業務課二 --> 422數據結構與操作系統
專業課加試 --> 543計算機組成原理與編譯原理

§數據結構與操作系統 參考書目:
《數據結構》嚴蔚敏,清華大學出版社;《計算機操作系統》湯子瀛,西安電子科技大學出版社。

--------------------------------------------------------------------------------

§數據結構與操作系統 考試大綱:
數據結構部分一、數據結構基本概念,演算法和簡單的演算法分析二、順序表和鏈表的存儲與基本操作;靜態鏈表;循環鏈表;雙向鏈表;三、棧和隊列的定義及其應用;棧和隊列的順序和鏈式存儲;四、字元串的定義、存儲和操作;字元串的模式匹配;五、數組的順序存儲表示;廣義表的定義和存儲結構,矩陣的壓縮存儲;六、二叉樹的定義、性質和存儲結構;遍歷二叉樹;樹的定義和存儲結構;霍夫曼編碼;七、圖的基本概念及其存儲表示:鄰接矩陣、鄰接表;圖的遍歷與連通性;最小生成樹;拓撲排序;關鍵路徑;最短路徑;八、查找:順序表查找;有序表查找;索引順序表查找;二叉排序樹;B-樹;哈希表的構造和沖突處理方法; 九、插入排序;交換排序;選擇排序;歸並排序;基數排序;外排序的基本過程;操作系統部分一、操作系統的基本概念二、進程管理:進程的引入,進程的定義,進程狀態及其轉換,PCB及其組織,原語,進程式控制制原語,進程同步,經典進程同步問題,進程通信,線程。三、調度的概念,隊列模型,調度演算法及其評價,死鎖的定義、產生的原因、產生的必要條件、處理死鎖的方法四、內存管理:鏈接與裝入,對換,連續內存分配方法,離散內存分配方法,虛擬內存分配方法,內存保護與共享五、設備管理:I/O體系結構,控制方法,I/O分配中的數據結構和分配方法,通道,設備獨立性及其實現方法,緩沖管理,設備處理等六、磁碟與文件系統:磁碟的基本概念、調度、性能改善和容錯,物理文件組織,外存分配方法和文件存儲空間的管理,邏輯文件組織,目錄及其管理,文件共享和保護七、操作系統介面類型,系統調用概念和實現方法

§計算機組成原理與編譯原理 參考書目:
《計算機組成原理》奉遠楨編,電子工業出版社;《編譯原理》陳火旺編,國防工業出版社;《編譯原理》陳火旺編,國防工業出版社。

--------------------------------------------------------------------------------

§計算機組成原理與編譯原理 考試大綱:
計算機組成原理部分第一章 概述 計算機各部件的作用和層次結構第二章 數據的表示 一、數值數據的表示二、非數值數據的表示 1.邏輯數據 2.中西文字元和多媒體信息三、校驗碼第三章 運算器與運算方法 1.算術和邏輯運算的實現 2.標志位 3.運算器結構第四章存儲系統一、存儲器分類、性能指標二、半導體存儲器三、高速緩存和虛擬存儲器四、磁表面和光存儲器第五章 指令系統一、指令格式二、定址方式和堆棧三、指令系統舉例第六章 中央處理機組織 一、CPU的結構與功能二、CPU控制流程和時序三、組合邏輯控制器設計四、微程序控制器設計第七章 輸入輸出組織一、I/O介面二、程序控制傳送和程序中斷三、DMA、通道和I/O處理機 編譯原理部分第一章:了解有關編譯程序的基本概念、結構第二章:掌握語言的定義與文法描述的基本概念、術語與文法改造方法; 第三章:掌握有限自動機、正規式的概念、演算法;正規式與有限自動機、正規文法的相互轉換。 第四章:掌握LL(1)分析方法;算符文法;LR(K)分析方法。第五章:掌握屬性文法的概念;S—屬性文法、L—屬性文法的定義、翻譯模式以及計算繼承屬性、綜合屬性的方法。第六章:掌握賦值語句與布爾表達式的翻譯;控制語句的翻譯;過程調用與類型檢查。第七章:運行存儲組織;靜態與動態存儲管理與實現。第八章:掌握優化概念與局部優化、數據流方程與循環優化方法。

參見:http://www.graate.nuaa.e.cn/zsjz/zydetail.asp?zydm=081203計算機應用技術&yxdm=004信息科學與技術學院

『捌』 南航計算機科學與技術專業復試科目541離散數學和編譯原理

京航空航天大學541離散數學與編譯原理2012年考研大綱:

《離散數學(第三版)》耿素雲、屈婉玲、張立昂編,清華大學出版社 2004年;
《編譯原理》陳火旺編,國防工業出版社,2000年,第三版。

離散數學部分
1. 命題邏輯與一階邏輯
1.1. 聯結詞、量詞、謂詞
1.2. 命題邏輯範式
1.3. 合式公式、解釋、等值式
1.4. 推理理論
2. 集合與關系
2.1. 集合的運算與性質
2.2. 關系的運算、性質與閉包
2.3. 等價關系與偏序關系
2.4. 函數的運算與性質
3. 代數系統
3.1. 代數系統及其同態與同構
3.2. 半群與群
3.3. 格與布爾代數
4. 圖與樹
4.1. 圖的定義與表示
4.2. 圖的連通性、歐拉圖、哈密爾頓圖
4.3. 二部圖、平面圖
4.4. 樹、生成樹與根樹
編譯原理部分
第一章:了解有關編譯程序的基本概念、結構
第二章:掌握語言的定義與文法描述的基本概念、術語與文法改造方法;
第三章:掌握有限自動機、正規式的概念、演算法;正規式與有限自動機、正規文法的相互轉換。
第四章:掌握LL(1)分析方法;算符文法;LR(K)分析方法。
第五章:掌握屬性文法的概念;S―屬性文法、L―屬性文法的定義、翻譯模式以及計算繼承屬性、綜合屬性的方法。
第六章:掌握賦值語句與布爾表達式的翻譯;控制語句的翻譯;過程調用與類型檢查。
第七章:運行存儲組織;靜態與動態存儲管理與實現。
第八章:掌握優化概念與局部優化、數據流方程與循環優化方法。

『玖』 編譯原理全部的名詞解釋

書上有別那麼懶!。。。。
編譯過程的六個階段:詞法分析,語法分析,語義分析,中間代碼生成,代碼優化,目標代碼生成
解釋程序:把某種語言的源程序轉換成等價的另一種語言程序——目標語言程序,然後再執行目標程序。解釋方式是接受某高級語言的一個語句輸入,進行解釋並控制計算機執行,馬上得到這句的執行結果,然後再接受下一句。
編譯程序:就是指這樣一種程序,通過它能夠將用高級語言編寫的源程序轉換成與之在邏輯上等價的低級語言形式的目標程序(機器語言程序或匯編語言程序)。
解釋程序和編譯程序的根本區別:是否生成目標代碼
句子的二義性(這里的二義性是指語法結構上的。):文法G[S]的一個句子如果能找到兩種不同的最左推導(或最右推導),或者存在兩棵不同的語法樹,則稱這個句子是二義性的。
文法的二義性:一個文法如果包含二義性的句子,則這個文法是二義文法,否則是無二義文法。
LL(1)的含義:(LL(1)文法是無二義的; LL(1)文法不含左遞歸)
第1個L:從左到右掃描輸入串 第2個L:生成的是最左推導
1 :向右看1個輸入符號便可決定選擇哪個產生式
某些非LL(1)文法到LL(1)文法的等價變換: 1. 提取公因子 2. 消除左遞歸
文法符號的屬性:單詞的含義,即與文法符號相關的一些信息。如,類型、值、存儲地址等。
一個屬性文法(attribute grammar)是一個三元組A=(G, V, F)
G:上下文無關文法。
V:屬性的有窮集。每個屬性與文法的一個終結符或非終結符相連。屬性與變數一樣,可以進行計算和傳遞。
F:關於屬性的斷言或謂詞(一組屬性的計算規則)的有窮集。斷言或語義規則與一個產生式相聯,只引用該產生式左端或右端的終結符或非終結符相聯的屬性。
綜合屬性:若產生式左部的單非終結符A的屬性值由右部各非終結符的屬性值決定,則A的屬性稱為綜合屬
繼承屬性:若產生式右部符號B的屬性值是根據左部非終結符的屬性值或者右部其它符號的屬性值決定的,則B的屬性為繼承屬性。
(1)非終結符既可有綜合屬性也可有繼承屬性,但文法開始符號沒有繼承屬性。
(2) 終結符只有綜合屬性,沒有繼承屬性,它們由詞法程序提供。
在計算時: 綜合屬性沿屬性語法樹向上傳遞;繼承屬性沿屬性語法樹向下傳遞。
語法制導翻譯:是指在語法分析過程中,完成附加在所使用的產生式上的語義規則描述的動作。
語法制導翻譯實現:對單詞符號串進行語法分析,構造語法分析樹,然後根據需要構造屬性依賴圖,遍歷語法樹並在語法樹的各結點處按語義規則進行計算。
中間代碼(中間語言)
1、是復雜性介於源程序語言和機器語言的一種表示形式。
2、一般,快速編譯程序直接生成目標代碼。
3、為了使編譯程序結構在邏輯上更為簡單明確,常採用中間代碼,這樣可以將與機器相關的某些實現細節置於代碼生成階段仔細處理,並且可以在中間代碼一級進行優化工作,使得代碼優化比較容易實現。
何謂中間代碼:源程序的一種內部表示,不依賴目標機的結構,易於代碼的機械生成。
為何要轉換成中間代碼:(1)邏輯結構清楚;利於不同目標機上實現同一種語言。
(2)便於移植,便於修改,便於進行與機器無關的優化。
中間代碼的幾種形式:逆波蘭記號 ,三元式和樹形表示 ,四元式
符號表的一般形式:一張符號表的的組成包括兩項,即名字欄和信息欄。
信息欄包含許多子欄和標志位,用來記錄相應名字和種種不同屬性,名字欄也稱主欄。主欄的內容稱為關鍵字(key word)。
符號表的功能:(1)收集符號屬性 (2) 上下文語義的合法性檢查的依據: 檢查標識符屬性在上下文中的一致性和合法性。(3)作為目標代碼生成階段地址分配的依據
符號的主要屬性及作用:
1. 符號名 2. 符號的類型 (整型、實型、字元串型等))3. 符號的存儲類別(公共、私有)
4. 符號的作用域及可視性 (全局、局部) 5. 符號變數的存儲分配信息 (靜態存儲區、動態存儲區)
存儲分配方案策略:靜態存儲分配;動態存儲分配:棧式、 堆式。
靜態存儲分配
1、基本策略
在編譯時就安排好目標程序運行時的全部數據空間,並能確定每個數據項的單元地址。
2、適用的分配對象:子程序的目標代碼段;全局數據目標(全局變數)
3、靜態存儲分配的要求:不允許遞歸調用,不含有可變數組。
FORTRAN程序是段結構,不允許遞歸,數據名大小、性質固定。 是典型的靜態分配
動態存儲分配
1、如果一個程序設計語言允許遞歸過程、可變數組或允許用戶自由申請和釋放空間,那麼,就需要採用動態存儲管理技術。
2、兩種動態存儲分配方式:棧式,堆式
棧式動態存儲分配
分配策略:將整個程序的數據空間設計為一個棧。
【例】在具有遞歸結構的語言程序中,每當調用一個過程時,它所需的數據空間就分配在棧頂,每當過程工作結束時就釋放這部分空間。
過程所需的數據空間包括兩部分
一部分是生存期在本過程這次活動中的數據對象。如局部變數、參數單元、臨時變數等;
另一部分則是用以管理過程活動的記錄信息(連接數據)。
活動記錄(AR)
一個過程的一次執行所需要的信息使用一個連續的存儲區來管理,這個區 (塊)叫做一個活動記錄。
構成
1、臨時工作單元;2、局部變數;3、機器狀態信息;4、存取鏈;
5、控制鏈;6、實參;7、返回地址
什麼是代碼優化
所謂優化,就是對代碼進行等價變換,使得變換後的代碼運行結果與變換前代碼運行結果相同,而運行速度加快或佔用存儲空間減少。
優化原則:等價原則:經過優化後不應改變程序運行的結果。
有效原則:使優化後所產生的目標代碼運行時間較短,佔用的存儲空間較小。
合算原則:以盡可能低的代價取得較好的優化效果。
常見的優化技術
(1) 刪除多餘運算(刪除公共子表達式) (2) 代碼外提 +刪除歸納變數+ (3)強度削弱; (4)變換循環控制條件 (5)合並已知量與復寫傳播 (6)刪除無用賦值
基本塊定義
程序中只有一個入口和一個出口的一段順序執行的語句序列,稱為程序的一個基本塊。

給我分數啊。。。

閱讀全文

與控制語句翻譯編譯原理相關的資料

熱點內容
卡爾曼濾波演算法書籍 瀏覽:765
安卓手機怎麼用愛思助手傳文件進蘋果手機上 瀏覽:841
安卓怎麼下載60秒生存 瀏覽:800
外向式文件夾 瀏覽:233
dospdf 瀏覽:428
怎麼修改騰訊雲伺服器ip 瀏覽:385
pdftoeps 瀏覽:490
為什麼鴻蒙那麼像安卓 瀏覽:733
安卓手機怎麼拍自媒體視頻 瀏覽:183
單片機各個中斷的初始化 瀏覽:721
python怎麼集合元素 瀏覽:477
python逐條解讀 瀏覽:829
基於單片機的濕度控制 瀏覽:496
ios如何使用安卓的帳號 瀏覽:880
程序員公園采訪 瀏覽:809
程序員實戰教程要多長時間 瀏覽:972
企業數據加密技巧 瀏覽:132
租雲伺服器開發 瀏覽:811
程序員告白媽媽不同意 瀏覽:333
攻城掠地怎麼查看伺服器 瀏覽:600