編譯程序都有哪些?
編譯程序有哪些主要構成成分?它們各自的主要功能是什麼?
數據結構
分析和綜合時所用的主要數據結構,包括符號表、
常數表和中間語言程序。
符號表由源程序中所用的標識符連同它
們的屬性組成,
其中屬性包括種類
(如變量、
數組、
結構、
函數、
過程等)、類型(如整型、實型、字符串、復型、標號等),以
及目標程序所需的其他信息。常數表由源程序中用的常數組成,
其中包括常數的機內表示,
以及分配給它們的目標程序地址。
中
間語言程序是將源程序翻譯為目標程序前引入的一種中間形式
的程序,
其表示形式的選擇取決於編譯程序以後如何使用和加工
它。
常用的中間語言形式有波蘭表示、
三元組、
四元組以及間接
三元組等。
分析部分
源程序的分析是經過詞法分析、語法分析和語
義分析三個步驟實現的。
詞法分析由詞法分析程序
(又稱為掃描
程序)完成,其任務是識別單詞(即標識符、常數、保留字,以
及各種運算符、標點符號等)、造符號表和常數表,以及將源程
序換碼為編譯程序易於分析和加工的內部形式。
語法分析程序是
編譯程序的核心部分,
其主要任務是根據語言的語法規則,
檢查源程序是否合乎語法。
如不合乎語法,
則輸出語法出錯信息;
如
合乎語法,
則分解源程序的語法結構,
構造中間語言形式的內部
程序。
語法分析的目的是掌握單詞是怎樣組成語句的,
以及語句
又是如何組成程序的。
語義分析程序是進一步檢查合法程序結構
的語義正確性,
其目的是保證標識符和常數的正確使用,
把必要
的信息收集和保存到符號表或中間語言程序中,
並進行相應的語
義處理。
綜合部分
綜合階段必須根據符號表和中間語言程序產生
出目標程序,其主要工作包括代碼優化、存儲分配和代碼生成。
代碼優化是通過重排和改變程序中的某些操作,
以產生更加有效
的目標程序。
存儲分配的任務是為程序和數據分配運行時的存儲
單元。
代碼生成的主要任務是產生與中間語言程序符等價的目標
程序,
順序加工中間語言程序,
並利用符號表和常數表中的信息
生成一系列的彙編語言或機器語言指令。
結構
編譯過程分為分析和綜合兩個部分,
並進一步劃分為
詞法分析、語法分析、
語義分析、
代碼優化、存儲分配和代碼
生成等六個相繼的邏輯步驟。
這六個步驟只表示編譯程序各部分
之間的邏輯聯繫,
而不是時間關係。
編譯過程既可以按照這六個
邏輯步驟順序地執行,
也可以按照平行互鎖方式去執行。
在確定
編譯程序的具體結構時,
常常分若干遍實現。
對於源程序或中間
語言程序,
從頭到尾掃視一次並實現所規定的工作稱作一遍。
每
一遍可以完成一個或相連幾個邏輯步驟的工作。
例如,
可以把詞
法分析作為第一遍;
語法分析和語義分析作為第二遍;
代碼優化
和存儲分配作為第三遍;
代碼生成作為第四遍。
反之,
為了適應
較小的存儲空間或提高目標程序質量,
也可以把一個邏輯步驟的
工作分為幾遍去執行。
例如,
代碼優化可劃分為代碼優化準備工
作和實際代碼優化兩遍進行。
一個編譯程序是否分遍
,
以及如何分遍
,
根據具體情況而定。
其判別標準可以是存儲容量的大小、
源語言的繁簡、
解題範圍的
寬窄,
以及設計、
編制人員的多少等。
分遍的好處是各遍功能獨
立單純、相互聯繫簡單、邏輯結構清晰、優化準備工作充分。缺
點是各遍之中不可避免地要有些重複的部分,
而且遍和遍之間要
有交接工作,因之增加了編譯程序的長度和編譯時間。
一遍編譯程序是一種極端情況,
整個編譯程序同時駐留在內
存
,
彼此之間採用調用轉接方式連接在一起
(
圖
2)
。當語法分析
程序......
c編譯程序是什麼?
D
編譯程序
這是一類很重要的語言處理程序,它把高級語言(如FORTRAN、COBOL、Pascal、C等)源程序作為輸入,雞行翻譯轉換,產生出機器語言的目標程序,然後再讓計算機去執行這個目標程序,得到計算結果。
實在不明白用排除法
編譯程序是什麼意思啊
你是想知道這個概念的意思麼,有點籠統不好給你講的。你說的編譯程序是編程麼,編程就是駕馭機器
編譯程序是什麼意思?編譯是什麼意思?
把用高級程序設計語言書寫的源程序,翻譯成等價的計算機彙編語言或機器語言書寫的目標程序的翻譯程序。編譯程序屬於採用生成性實現途徑實現的翻譯程序。它以高級程序設計語言書寫的源程序作為輸入,而以彙編語言或機器語言表示的目標程序作為輸出。編譯出的目標程序通常還要經歷運行階段,以便在運行程序的支持下運行,加工初始數據,算出所需的計算結果。編譯程序的實現算法較為複雜。這是因為它所翻譯的語句與目標語言的指令不是一一對應關係,而是一多對應關係;同時也因為它要處理遞歸調用、動態存儲分配、多種數據類型,以及語句間的緊密依賴關係。但是,由於高級程序設計語言書寫的程序具有易讀、易移植和表達能力強等特點,編譯程序廣泛地用於翻譯規模較大、複雜性較高、且需要高效運行的高級語言書寫的源程序。
目前最常用的作C語言編譯程序的軟件是什麼?
如果你用Turbo C的話,不需要太高配置,基本的DOS能跑的系統他就能跑。
如果你用VC++6.0跑的話,那麼最低也得賽揚II一級別,256M內存,然後WIN98系統,硬盤至少2G空間
如果你用Visual Studio200X跑的話,建議奔騰四的機器,而且內存要大,至少512M,XP環境,如果要加載SQL SERVER的話,內存還要更大,至少1G,否則服務掛不動,而且硬盤最好留5G空間,可以安裝一些MSDN。方便查閱。
其次,還有個GCC編譯器,可以下載一個環境,配置一下,這是LINUX下的C編譯器,效率很高,而且出來的OBJ沒有垃圾數據,推薦,這個跟TC環境差不多
目前主流的C語言編譯軟件是什麼
vc++ 6.0比較老 但是適合初學者學習 初學者足夠了
vs 2010 、vs 2012不錯, 軟件稍大,
eclipse 也可以 不過不太常用
如果是初學者建議 vc++6.0 或者 vs 2012
編譯程序的優點是什麼啊?解釋程序的優點又是什麼?
5、編譯程序和解釋程序
高級語言程序同樣要翻譯成二進制程序才能執行。
耿級語言的兩種執行方式:
(1)解釋方式:翻譯一條,執行一條 特點:慢,但佔空間小
(2)編譯方式:翻譯成目標程序,然後運行目標程序 特點:快,但佔用空間大 (考點)
編譯軟件具體是什麼啊?為屬於系統軟件啊
以上回答是什麼亂七八糟的水平!
計算機常識,操作系統,數據庫管理系統,編譯軟件都屬於系統軟件。
沒有為什麼,這就是個定義。規定就是這樣。原因我想可能是因為這些軟件都沒有特定的應用吧。。都是為了輔助其它應用軟件而存在。所以定義為系統軟件。
編譯原理---程序執行的兩種方式是什麼
解釋執行和編譯執行,前者過程簡單,後者執行速度快