Ⅰ 為什麼高級語言中存在編譯和解釋兩種編譯方式
編譯方式:事先編好的一個叫做編譯程序的機器語言程序放在計算機中。當高級語言編的源程序輸入計算機時,編譯程序就把源程序自動整個地翻譯成用機器指令表示的目標程序。
解釋方式:事先編好的一個叫做解釋程序的機器語言程序放在計算機中,當高級語言源程序輸入計算機後,解釋程序自動地逐句翻譯源程序,譯一句執行一句。
因此往往需要特定的平台,由於程序執行的是編譯好的二進制文件,這種編譯一旦完成,那麼就只能在特定平台上運行了:編譯是指將源語言轉化為目標計算機的可執行二進制代碼兩者互有優劣,因此速度比較快(相對下面的解釋)。
解釋方式:事先編好的一個叫做解釋程序的機器語言程序放在計算機中,當高級語言源程序輸入計算機後,解釋程序自動地逐句翻譯源程序,譯一句執行一句。 可以這么理解,編譯的結果是另外一種語言,而解釋的就是一種中間語言。
Ⅱ C語言文件的編譯與執行的四個階段並分別描述
開發C程序有四個步驟:編輯、編譯、連接和運行。
任何一個體系結構處理器上都可以使用C語言程序,只要該體系結構處理器有相應的C語言編譯器和庫,那麼C源代碼就可以編譯並連接到目標二進制文件上運行。
1、預處理:導入源程序並保存(C文件)。
2、編譯:將源程序轉換為目標文件(Obj文件)。
3、鏈接:將目標文件生成為可執行文件(EXE文件)。
4、運行:執行,獲取運行結果的EXE文件。
(2)高級語言編譯過程圖表形式擴展閱讀:
將C語言代碼分為程序的幾個階段:
1、首先,源代碼文件測試。以及相關的頭文件,比如stdio。H、由預處理器CPP預處理為.I文件。預編譯的。文件不包含任何宏定義,因為所有宏都已展開,並且包含的文件已插入。我歸檔。
2、編譯過程是對預處理文件進行詞法分析、語法分析、語義分析和優化,生成相應的匯編代碼文件。這個過程往往是整個程序的核心部分,也是最復雜的部分之一。
3、匯編程序不直接輸出可執行文件,而是輸出目標文件。匯編程序可以調用LD來生成可以運行的可執行程序。也就是說,您需要鏈接大量的文件才能獲得「a.out」,即最終的可執行文件。
4、在鏈接過程中,需要重新調整其他目標文件中定義的函數調用指令,而其他目標文件中定義的變數也存在同樣的問題。
Ⅲ 計算機程序中,用高級語言編寫的程序經編譯後產生的程序叫什麼
高級語言編寫的代碼經過編譯後就是可執行程序,高級語言到可執行文件主要有七個個過程。
高級語言編譯的七個過程:
預處理,詞法分析,語法分析,語義分析,中間代碼產生,代碼優化,目標代碼產生。
下面對這幾個過程詳細講解:
1、預處理:
對原文件進行預處理,比如頭文件,導入的模塊,宏定義等進行處理;
2、詞法分析:
詞法分析是第一階段,這個階段的任務是從左到右一個字元一個字元的讀入源程序,對構成源程序的字元流進行掃描和分解,從而識別出一個個單詞。
3、語法分析:
語法分析的任務是在詞法分析的基礎上將單詞程序分解成各位語法短語。
4、語義分析:
語義分析是審查源程序有無語義錯誤,為代碼生成階段收集類型信息。
5、中間代碼生成:
在進行了上述的語法分析階段等工作之後,有的編譯程序將源程序變成一種內部表示形式,這種內部表示形式叫做中間語言或中間代碼。中間代碼生成階段要在語法和語義分析的基礎上,將源程序進一步變為一種內部表示形式,它通常易於生成、易於翻譯成目標代碼,不過不是所有的語言都必須經過這一步。
6、代碼優化:
這一階段的任務是對前一階段產生的中間代碼進行變換或進行改造,目的是使生成的目標代碼更為高效。代碼優化階段,對前階段生成的中間代碼進行變換或改造,以便生成目標代碼時更加節省時間和空間,這一工作也不是必須的。
7、目標代碼生成:
這一階段的任務是吧中間代碼變換成特定機器上的絕對指令代碼或可重定位的指令代碼或匯編指令代碼。
Ⅳ 高級語言經過編譯
高級語言要執行須經過以下步驟:
高級語言——》匯編語言——》機器語言(0和1的代碼)
高級語言通過編譯其編譯成匯編語言,如:
c = a + b;//高級語言
add $s1 $t1 $t2 ; //匯編語言
再由匯編程序轉換成二進制代碼,如:
000000 10001 10010 01000 00000 100000
註:每條匯編語言都有唯一的機器語言與之對應
在翻譯成機器代碼後就要把機器代碼與原文件 鏈接 載入 於是就運行了
Ⅳ 簡述高級語言編程的基本步驟
功能規劃→選擇編程語言→編寫程序→編譯、測試程序→修改程序→完善、改進、升級等等。
Ⅵ 高級語言中的解釋方式和編譯方式的區別
兩者的區別如下:
解釋方式:程序運行時,取一條指令,將其轉化為機器指令,再執行這條機器指令。這種方式每次運行程序時都要重新翻譯整個程序,效率較低,執行速度慢,如QB,不過現在很少再用這種低效的方式的設計語言了。
編譯方式:程序運行時之前,將程序的所有代碼編譯為機器代碼,再運行這個程序。然後每次執行的時候就可以直接執行這個翻譯好的二進制文件了,這樣的程序只需要翻譯一次,效率明顯要高很多,現在的大多數語言都是這種方式,網頁中的asp.net 採用的也是這種方式。
Ⅶ 高級語言的編譯過程,經過哪幾個步驟
開發C程序有四個步驟:編輯、編譯、連接和運行。
任何一個體系結構處理器上都可以使用C語言程序,只要該體系結構處理器有相應的C語言編譯器和庫,那麼C源代碼就可以編譯並連接到目標二進制文件上運行。
1、預處理:導入源程序並保存(C文件)。
2、編譯:將源程序轉換為目標文件(Obj文件)。
3、鏈接:將目標文件生成為可執行文件(EXE文件)。
4、運行:執行,獲取運行結果的EXE文件。
(7)高級語言編譯過程圖表形式擴展閱讀:
將C語言代碼分為程序的幾個階段:
1、首先,對源代碼文件進行測試。以及相關的頭文件,比如Stdio。H.CPP預處理為。我的文件。預編譯。該文件不包含任何宏定義,因為所有宏都已展開,且包含的文件已插入。我提起。
2、編譯過程是對預處理後的文件進行詞法分析、語法分析、語義分析和優化,生成相應的匯編代碼文件。這個過程通常是整個程序的核心部分,也是最復雜的過程之一。
3、匯編程序不直接輸出可執行文件,而是輸出目標文件。匯編程序可以調用LD來生成可運行的可執行程序。也就是說,您需要鏈接到大量文件以獲得最終可執行文件「a.out」。
4、在鏈接過程中,其他目標文件中定義的函數調用指令需要重新調整,而其他目標文件中定義的變數也存在同樣的問題。
Ⅷ 高級語言、低級語言、偽代碼、編譯程序、匯編程序、解釋程序、機器語言、自然語言、流程圖
高級語言是相對於低級語言說的,低級語言官方名稱為匯編語言,就是計算機的硬體能直接識別並執行的語言,高級語言不能被計算直接識別必須由計算轉換成匯編語言才能執行。
偽代碼是編寫者為了方便、減化程序,讓程序更加簡捷、明了、直觀的編寫程序,方便自己和讀者讀懂程序自己定義一的指令,就像為了方便稱乎你而不用描述你長什麼樣、穿什麼衣服等等給你起的名字一樣。
編譯程序是編寫程序的過程,就像你把中文翻譯成英文的過程就叫翻譯一樣,只不過那個叫編譯,因為它不只是要翻譯,還要編寫。
匯編程序是由匯編語言直接編寫的一段完整的代碼,能夠表達編寫者的意圖、目的一段代碼,就如同游戲程序一樣,能夠執行的就像你要做一個程序算出一個值一樣,必須完整的才叫程,不完整的只能叫一段匯編代碼,因為它不能執行或不能完整的表達作者的意圖。
解釋程序就是了解編寫者的目的、意圖對其編寫好的程序逐行分析並加以解釋。
機器語言就是比匯編更加基礎的一類語言,就是二進制代碼比如說不得010111000011001之類的語言,能直接被計算執行,其實計算是讀不懂匯編語言的,必須由內存中事先存好的機器語言對匯編語言的定義,比如說啊move這個是匯編語言中的移動指令,咱人能讀懂是因為事先有人把這個語言存在人的大腦里了,但計算機不懂啊,所以必須轉化為機器語言再執行。
自然語言就是自然話了,就是人能讀懂的語言,電腦不一定明白的話,就象中國話一樣。
流程圖是編寫者為了方便編寫程序或直觀的分析程序上下句之間的過程,自己畫的一個流程圖,就象你要去吃飯,但不知怎麼去吃飯的地方,這樣給你畫一個路線圖就明白了。
Ⅸ 高級語言的三大結構
順序結構,選擇結構,循環結構。
高級語言(High-level programming language)是一種獨立於機器,面向過程或對象的語言。高級語言是參照數學語言而設計的近似於日常會話的語言。
高級語言程序「看不見」機器的硬體結構,不能用於編寫直接訪問機器硬體資源的系統軟體或設備控制軟體。為此,一些高級語言提供了與匯編語言之間的調用介面。用匯編語言編寫的程序,可作為高級語言的一個外部過程或函數,利用堆棧來傳遞參數或參數的地址。
高級語言的工作方式:
高級語言設計的程序必須經過「翻譯」以後才能被機器執行。「翻譯」的方法有兩種,一種是解釋,一種是編譯。
解釋是把源程序翻譯一句,執行一句的過程,而編譯是源程序翻譯成機器指令形式的目標程序的過程,再用鏈接程序把目標程序鏈接成可執行程序後才能執行。