Ⅰ 編譯程序的工作過程一般可以劃分為哪5個基本階段,還自始至終伴隨進行哪兩項工作
1、編譯程序把一個源程序翻譯成目標程序的工作過程分為五個階段:詞法分析;語法分析;中間代碼生成;代碼優化;目標代碼生成。
2、編譯程序的工作過程一般自始至終伴隨進行信息表管理和出錯處理兩項工作。
主要是進行詞法分析和語法分析,又稱為源程序分析,分析過程中發現有語法錯誤,給出提示信息。
(1)編譯型是否產生目標程序擴展閱讀:
解釋程序是一種語言處理程序,在詞法、語法和語義分析方面與編譯程序的工作原理基本相同,但在運行用戶程序時,它直接執行源程序或源程序的內部形式(中間代碼)。因此,解釋程序並不產生目標程序,這是它和編譯程序的主要區別。解釋程序的工作過程如下:
1、由總控程序完成初始化工作。
2、依次從源程序中取出一條語句進行語法檢查,如有錯,輸出錯誤信息;如果通過了語法檢查,則根據語句翻澤成相應的指令並執行它。
3、檢查源程序是否已經全部解釋執行完畢,如果未完成則繼續解釋並執行下一條語句,直到全部語句都處理完畢。
Ⅱ 解釋程序和編譯程序那個能產生目標程序
都可以產生目標程序,不同的是,編譯程序是把高級語言編寫的源程序翻譯成機器語言的目標程序.解釋程序,是把某種程序設計語言編寫的源程序翻譯成機器語言的目標程序,且翻譯一條,執行一條的原則
Ⅲ 匯編程序和編譯程序哪個產生目標程序
各種軟體,是不同的。
有的匯編程序,直接就生成可執行文件,根本就沒有目標程序。
Ⅳ 用高級語言編寫的源程序,經編譯後產生的是
目標程序。
目標程序,又稱為「目的程序」,為源程序經編譯可直接被計算機運行的機器碼集合,在計算機文件上以.obj作擴展名----由語言處理程序(匯編程序,編譯程序,解釋程序)將源程序處理(匯編,編譯,解釋)成與之等價的由機器碼構成的,計算機能夠直接運行的程序,該程序叫目標程序。
目標代碼盡管已經是機器指令,但是還不能運行,因為目標程序還沒有解決函數調用問題,需要將各個目標程序與庫函數連接,才能形成完整的可執行程序。
(4)編譯型是否產生目標程序擴展閱讀
計算機並不能直接地接受和執行用高級語言編寫的源程序,源程序在輸入計算機時,通過"翻譯程序"翻譯成機器語言形式的目標程序,計算機才能識別和執行。這種"翻譯"通常有兩種方式,即編譯方式和解釋方式。
編譯方式是指利用事先編好的一個稱為編譯程序的機器語言程序,作為系統軟體存放在計算機內,當用戶將高級語言編寫的源程序輸入計算機後,編譯程序便把源程序整個地翻譯成用機器語言表示的與之等價的目標程序。
然後計算機再執行該目標程序,以完成源程序要處理的運算並取得結果。解釋方式是指源程序進入計算機後,解釋程序邊掃描邊解釋,逐句輸入逐句翻譯。
計算機一句句執行,並不產生目標程序。如PASCAL、FORTRAN、COBOL等高級語言執行編譯方式;BASIC語言則以執行解釋方式為主;而PASCAL、C語言是能書寫編譯程序的高級程序設計語言。
Ⅳ 編譯程序和解釋程序的區別在於A.是否產生目標
編譯程序和解釋程序的區別在於
A.是否產生目標程序
B.是否用於將高級語言源程序轉換成機器語言
C.是否屬於語言處理程序
D.是否有可視化的開發環境
正確答案:A
Ⅵ 編譯過程中,源程序為什麼要通過中間代碼生成目標程序
源程序是指程序員編寫的代碼,可以被編譯程序編譯為目標程序。
如果是c++,那麼後綴為.cpp
目標程序是編譯程序將源程序編譯後的結果,如果是c++,那麼後綴是.o
編譯程序一般是編譯器公司(比如微軟
intel他們都生產編譯器)做的,它將源代碼轉化為機器可識別的文件,經過鏈接,生成可執行程序。
解釋程序即解釋器,它不需要經過編譯階段即可根據用戶源程序執行。
程序語言分編譯類和解釋類語言。
Ⅶ 程序語言中編譯,解釋,編輯的區別
首先說編輯,這個一般指的是編輯高級語言代碼,也就人能夠看懂的計算機語言,如JAVA,C,C#等等,總之就是人通過學習語法規則就能夠理解其邏輯過程的語言都算高級語言。編輯就是指的編寫這樣的代碼。
我們知道,計算機是無法讀懂高級語言的,那麼就需要編譯器把高級語言轉換成計算機可以運行的機器語言,就是一般的0101010001的二進制代碼。
高級語言翻譯為計算機能讀懂的機器語言的方式有兩種,一個是編譯,一個是解釋。兩種方式只是翻譯的時間不同。程序執行之前,需要一個專門的編譯過程(跟計算機語言的種類有關,比如C就是這樣),把程序編譯成為機器語言的文件,比如WINDIOWS系統下的exe文件,以後要運行的話就不用重新翻譯了,直接使用編譯的結果就行了(exe文件)。
解釋則不同,這類語言寫的程序不需要編譯(比如php),省了這道工序,語言在運行程序的時候才翻譯,比如解釋性php語言,專門有一個解釋器能夠直接執行php程序,每個語句都是執行的時候才翻譯,然後給計算機執行。
那麼為什麼要分為了兩種呢,因為編譯型語言一經編輯,其對系統的要求就定死了,比如平台,硬體類型等,已經編譯為機器代碼了,就只能在同類機器上運行。同時因為其只編譯一次,執行時不需要編譯,所以一般效率高。
解釋型的就不同,由於語言是在執行時被翻譯的,所以解釋器能夠根據當前的系統平台,硬體情況實時生成機器語言用於運行,所以,其從一個系統移植到另一個系統就很容易。但是一般的,因為他每次運行都要翻譯,所以一般效率較低。
關於他們的效率不一定的,有一些的解釋型的語言運行效率不比編譯型的低,因為他實時的對語言進行優化,提升了運行效率,主要看解釋器的性能有多強。
還有一點就是編譯型語言適合大量的復制進行商業活動,因為一旦編譯成機器語言,人就看不懂了。所以代碼泄露的可能很低,而解釋型的,復制時需要直接復制源代碼(既高級語言)這樣獲得的人都能查看其源代碼並通過編輯器修改,這樣是不利於版權,技術的保護的。
大致上就是這樣。
Ⅷ 編譯程序和解釋程序都是什麼意思
1、編譯程序是把用高級程序設計語言或計算機匯編語言書寫的源程序,翻譯成等價的機器語言格式目標程序的翻譯程序,屬於採用生成性實現途徑實現的翻譯程序。編譯程序以高級程序設計語言書寫的源程序作為輸入,而以匯編語言或機器語言表示的目標程序作為輸出;編譯出的目標程序通常還要經歷運行階段,以便在運行程序的支持下運行,加工初始數據,算出所需的計算結果。
2、解釋程序是高級語言翻譯程序的一種,它將源語言書寫的源程序作為輸入,解釋一句後就提交計算機執行一句,並不形成目標程序。就像外語翻譯中的「口譯」一樣,說一句翻一句,不產生全文的翻譯文本。
(8)編譯型是否產生目標程序擴展閱讀:
編譯程序的實現演算法較為復雜。這是因為它所翻譯的語句與目標語言的指令不是一一對應關系,而是一多對應關系;同時也因為它要處理遞歸調用、動態存儲分配、多種數據類型,以及語句間的緊密依賴關系。但是,由於高級程序設計語言書寫的程序具有易讀、易移植和表達能力強等特點,編譯程序廣泛地用於翻譯規模較大、復雜性較高、且需要高效運行的高級語言書寫的源程序。
Ⅸ 編譯是將整個源程序代碼文件一次性翻譯成目標程序代碼,最終生成可執行文件,對么
正確。
編譯(compilation , compile)
1、利用編譯程序從源語言編寫的源程序產生目標程序的過程。
2、用編譯程序產生目標程序的動作。 編譯就是把高級語言變成計算機可以識別的2進制語言,計算機只認識1和0,編譯程序把人們熟悉的語言換成2進制的。
編譯程序把一個源程序翻譯成目標程序的工作過程分為五個階段:詞法分析;語法分析;語義檢查和中間代碼生成;代碼優化;目標代碼生成。主要是進行詞法分析和語法分析,又稱為源程序分析,分析過程中發現有語法錯誤,給出提示信息。
Ⅹ 編譯程序是否能夠產生目標程序
是的。雖然常用的集成開發環境把編譯過程及鏈接過程連在一起,但從嚴格意義上講,我們通常說的編譯(靜態編譯)是把源程序轉換成語義等價的目標程序,然後由鏈接器(linker)把一個(或多個)目標程序與程序庫鏈接成可執行文件