1樓:
編譯程式指將某一種程式設計語言寫的程式翻譯成等價的另一種語言的程式的程式, 稱之為編譯程式
編譯程式也稱為編譯器,是指把用高階程式設計語言書寫的源程式,翻譯成等價的機器語言格式目標程式的翻譯程式。編譯程式屬於採用生成性實現途徑實現的翻譯程式。
它以高階程式設計語言書寫的源程式作為輸入,而以組合語言或機器語言表示的目標程式作為輸出。編譯出的目標程式通常還要經歷執行階段,以便在執行程式的支援下執行,加工初始資料,算出所需的計算結果。
編譯程式的實現演算法較為複雜,這是因為它所翻譯的語句與目標語言的指令不是一一對應關係,而是一多對應關係,同時也因為它要處理遞迴呼叫、動態儲存分配、多種資料型別,以及語句間的緊密依賴關係。
由於高階程式設計語言書寫的程式具有易讀、易移植和表達能力強等特點,編譯程式廣泛地用於翻譯規模較大、複雜性較高、且需要高效執行的高階語言書寫的源程式。
2樓:
編譯程式(compiler,compiling program)也稱為編譯器,是指把用高階程式設計語言書寫的源程式,翻譯成等價的機器語言格式目標程式的翻譯程式。
編譯程式屬於採用生成性實現途徑實現的翻譯程式。它以高階程式設計語言書寫的源程式作為輸入,而以組合語言或機器語言表示的目標程式作為輸出。
編譯出的目標程式通常還要經歷執行階段,以便在執行程式的支援下執行,加工初始資料,算出所需的計算結果。
擴充套件資料:
編譯程式的功能
①語法檢查:檢查源程式是否合乎語法。如果不符合語法,編譯程式要指出語法錯誤的部位、性質和有關資訊。編譯程式應使使用者一次上機,能夠儘可能多地查出錯誤。
②除錯措施:檢查源程式是否合乎設計者的意圖。為此,要求編譯程式在編譯出的目標程式中安置一些輸出指令,以便在目標程式執行時能輸出程式動態執**況的資訊,如變數值的更改、程式執行時所經歷的線路等。
這些資訊有助於使用者核實和驗證源程式是否表達了演算法要求。
③修改手段:為使用者提供簡便的修改源程式的手段。編譯程式通常要提供批量修改手段(用於修改數量較大或臨時不易修改的錯誤)和現場修改手段(用於執行時修改數量較少、臨時易改的錯誤)。
④覆蓋處理:主要是為處理程式長、資料量大的大型問題程式而設定的。基本思想是讓一些程式段和資料公用某些儲存區,其中只存放當前要用的程式或資料;其餘暫時不用的程式和資料,先存放在磁碟等輔助儲存器中,待需要時動態地調入。
⑤目標程式優化:提高目標程式的質量,即佔用的儲存空間少,程式的執行時間短。依據優化目標的不同,編譯程式可選擇實現表示式優化、迴圈優化或程式全域性優化。
目標程式優化有的在源程式級上進行,有的在目標程式級上進行。
⑥不同語言合用:其功能有助於使用者利用多種程式設計語言編寫應用程式或套用已有的不同語言書寫的程式模組。最為常見的是高階語言和組合語言的合用。
這不但可以彌補高階語言難於表達某些非數值加工操作或直接控制、訪問外圍裝置和硬體暫存器之不足,而且還有利於用組合語言編寫核心部分程式,以提高執行效率。
3樓:匿名使用者
編譯程式是把用高階程式設計語言或計算機組合語言書寫的源程式,翻譯成等價的機器語言格式目標程式的翻譯程式,屬於採用生成性實現途徑實現的翻譯程式。
編譯程式以高階程式設計語言書寫的源程式作為輸入,而以組合語言或機器語言表示的目標程式作為輸出;編譯出的目標程式通常還要經歷執行階段,以便在執行程式的支援下執行,加工初始資料,算出所需的計算結果。
4樓:西伯利亞冷流
廢話少說,長話短說,編譯程式就是把高階語言變成計算機可以識別的2進位制語言,計算機只認識1和零,編譯程式把人們熟悉的語言換成2進位制的
5樓:匿名使用者
當你用tc/vb/vc這中程式設計軟體編寫程式的時候,你是用的是高階語言,就是符合我們人類語言習慣的,但是計算機看不懂~~
所以tc/vb/vb這類軟體,會在你程式編寫完成後,把你的**轉換成計算機能夠看懂的彙編或機器語言,這個過程就是編譯程式
6樓:文武曲
哦!我也是初學者,看了上面的回答我也明白了。謝謝大家。
7樓:匿名使用者
將高階語言源程式轉換成低階語言目標程式的翻譯程式
8樓:匿名使用者
編譯程式也叫編譯系統,是把用高階語言編寫的程序導向的源程式翻譯成目標程式的語言處理程式。
編譯程式把一個源程式翻譯成目標程式的工作過程分為五個階段:詞法分析;語法分析;中間**生成;**優化;目標**生成。主要是進行詞法分析和語法分析,又稱為源程式分析,分析過程中發現有語法錯誤,給出提示資訊。
(1) 詞法分析
詞法分析的任務是對由字元組成的單詞進行處理,從左至右逐個字元地對源程式進行掃描,產生一個個的單詞符號,把作為字串的源程式改造成為單詞符號串的中間程式。執行詞法分析的程式稱為詞法分析程式或掃描器。
源程式中的單詞符號經掃描器分析,一般產生二元式:單詞種別;單詞自身的值。單詞種別通常用整數編碼,如果一個種別只含一個單詞符號,那麼對這個單詞符號,種別編碼就完全代表它自身的值了。
若一個種別含有許多個單詞符號,那麼,對於它的每個單詞符號,除了給出種別編碼以外,還應給出自身的值。
詞法分析器一般來說有兩種方法構造:手工構造和自動生成。手工構造可使用狀態圖進行工作,自動生成使用確定的有限自動機來實現。
(2) 語法分析
編譯程式的語法分析器以單詞符號作為輸入,分析單詞符號串是否形成符合語法規則的語法單位,如表示式、賦值、迴圈等,最後看是否構成一個符合要求的程式,按該語言使用的語法規則分析檢查每條語句是否有正確的邏輯結構,程式是最終的一個語法單位。編譯程式的語法規則可用上下文無關文法來刻畫。
語法分析的方法分為兩種:自上而下分析法和自下而上分析法。自上而下就是從文法的開始符號出發,向下推導,推出句子。
而自下而上分析法採用的是移進歸約法,基本思想是:用一個寄存符號的先進後出棧,把輸入符號一個一個地移進棧裡,當棧頂形成某個產生式的一個候選式時,即把棧頂的這一部分歸約成該產生式的左鄰符號。
(3) 中間**生成
中間**是源程式的一種內部表示,或稱中間語言。中間**的作用是可使編譯程式的結構在邏輯上更為簡單明確,特別是可使目標**的優化比較容易實現。中間**即為中間語言程式,中間語言的複雜性介於源程式語言和機器語言之間。
中間語言有多種形式,常見的有逆波蘭記號、四元式、三元式和樹。
(4) **優化
**優化是指對程式進行多種等價變換,使得從變換後的程式出發,能生成更有效的目標**。所謂等價,是指不改變程式的執行結果。所謂有效,主要指目標**執行時間較短,以及佔用的儲存空間較小。
這種變換稱為優化。
有兩類優化:一類是對語法分析後的中間**進行優化,它不依賴於具體的計算機;另一類是在生成目標**時進行的,它在很大程度上依賴於具體的計算機。對於前一類優化,根據它所涉及的程式範圍可分為區域性優化、迴圈優化和全域性優化三個不同的級別。
(5) 目標**生成
目標**生成是編譯的最後一個階段。目標**生成器把語法分析後或優化後的中間**變換成目標**。目標**有三種形式:
① 可以立即執行的機器語言**,所有地址都重定位;
② 待裝配的機器語言模組,當需要執行時,由連線裝入程式把它們和某些執行程式連線起來,轉換成能執行的機器語言**;
③ 組合語言**,須經過彙編程式彙編後,成為可執行的機器語言**。
目標**生成階段應考慮直接影響到目標**速度的三個問題:一是如何生成較短的目標**;二是如何充分利用計算機中的暫存器,減少目標**訪問儲存單元的次數;三是如何充分利用計算機指令系統的特點,以提高目標**的質量。
編譯程式和解釋程式都是什麼意思?
9樓:景田不是百歲山
1、編譯程式是把用高階程式設計語言或計算機組合語言書寫的源程式,翻譯成等價的機器語言格式目標程式的翻譯程式,屬於採用生成性實現途徑實現的翻譯程式。編譯程式以高階程式設計語言書寫的源程式作為輸入,而以組合語言或機器語言表示的目標程式作為輸出;編譯出的目標程式通常還要經歷執行階段,以便在執行程式的支援下執行,加工初始資料,算出所需的計算結果。
2、解釋程式是高階語言翻譯程式的一種,它將源語言書寫的源程式作為輸入,解釋一句後就提交計算機執行一句,並不形成目標程式。就像外語翻譯中的「口譯」一樣,說一句翻一句,不產生全文的翻譯文字。
10樓:
編譯程式(compiler,compiling program)也稱為編譯器,是指把用高階程式設計語言書寫的源程式,翻譯成等價的機器語言格式目標程式的翻譯程式。
解釋程式是一種語言處理程式,在詞法、語法和語義分析方面與編譯程式的工作原理基本相同,但在執行使用者程式時,它直接執行源程式或源程式的內部形式(中間**)。
11樓:
a、解釋程式
所謂解釋程式是高階語言翻譯程式的一種,它將源語言(如basic)書寫的源程式作為輸入,解釋一句後就提交計算機執行一句,並不形成目標程式。就像外語翻譯中的「口譯」一樣,說一句翻一句,不產生全文的翻譯文字。這種工作方式非常適合於人通過終端裝置與計算機會話,如在終端上打一條命令或語句,解釋程式就立即將此語句解釋成一條或幾條指令並提交硬體立即執行且將執行結果反映到終端,從終端把命令打入後,就能立即得到計算結果。
這的確是很方便的,很適合於一些小型機的計算問題。但解釋程式執行速度很慢,例如源程式**現迴圈,則解釋程式也重複地解釋並提交執行這一組語句,這就造成很大浪費。
b、編譯程式
這是一類很重要的語言處理程式,它把高階語言(如fortran、cobol、pascal、c等)源程式作為輸入,進行翻譯轉換,產生出機器語言的目標程式,然後再讓計算機去執行這個目標程式,得到計算結果。
編譯程式工作時,先分析,後綜合,從而得到目標程式。所謂分析,是指詞法分析和語法分析;所謂綜合是指**優化,儲存分配和**生成。為了完成這些分析綜合任務,編譯程式採用對源程式進行多次掃描的辦法,每次掃描集中完成一項或幾項任務,也有一項任務分散到幾次掃描去完成的。
下面舉一個四遍掃描的例子:第一遍掃描做詞法分析;第二遍掃描做語法分析;第三遍掃描做**優化和儲存分配;第四遍掃描做**生成。
值得一提的是,大多數的編譯程式直接產生機器語言的目標**,形成可執行的目標檔案,但也有的編譯程式則先產生組合語言一級的符號**檔案,然後再呼叫匯程式設計序進行翻譯加工處理,最後產生可執行的機器語言目標檔案。
在實際應用中,對於需要經常使用的有大量計算的大型題目,採用招待速度較快的編譯型的高階語言較好,雖然編譯過程本身較為複雜,但一旦形成目標檔案,以後可多次使用。相反,對於小型題目或計算簡單不太費機時的題目,則多選用解釋型的會話式高階語言,如basic,這樣可以大大縮短程式設計及除錯的時
C語言條件編譯程式問題
一般情況下,源程式中所有的行都參加編譯。但有時希望對其中一部分內容只在滿足一定條件下才進行編譯,即對一部分內容指定編譯條件,這就是 條件編譯 conditional compile 條件編譯語句排版時,需考慮以下三種位置 1 條件編譯語句塊與函式定義體之間不存在相互巢狀 主要在 h 檔案中 2 條件...
解釋和編譯有什麼區別,程式的編譯與解釋有什麼區別?
城市秋天 一 與計算機的交流方式不同 1 解釋程式不產生目標 它逐條地取出源程式中的語句,邊解釋,邊執行 直譯器把源 檔案邊解釋成機器語言邊交給cpu執行。2 編譯是將源程式翻譯成可執行的目標 執行可執行程式檔案,翻譯與執行是分開的。二 執行環境不同 1 解釋程式可跨平臺使用,因為直譯器已經做好了對...
vc 6 0編譯器是如何編譯c語言程式的
例子 include void main 是一條語句一條語句的翻譯 一個編譯器包括詞法分析 語法分析 語義分析 中間 的生成 目標 的生成 優化等 其中詞法分析的功能是將一個 c檔案讀到記憶體中,然後根據這一大串字串判斷並分割出關鍵字 字母 識別符號等等 語法分析的功能是根據標準c語言的語法判斷這個...