當前位置:首頁 » 編程軟體 » 為何在編譯程序中要採用中間語言

為何在編譯程序中要採用中間語言

發布時間: 2023-02-09 05:47:54

1. 編譯過程中,源程序為什麼要通過中間代碼生成目標程序

源程序是指程序員編寫的代碼,可以被編譯程序編譯為目標程序。
如果是c++,那麼後綴為.cpp
目標程序是編譯程序將源程序編譯後的結果,如果是c++,那麼後綴是.o
編譯程序一般是編譯器公司(比如微軟
intel他們都生產編譯器)做的,它將源代碼轉化為機器可識別的文件,經過鏈接,生成可執行程序。
解釋程序即解釋器,它不需要經過編譯階段即可根據用戶源程序執行。
程序語言分編譯類和解釋類語言。

2. 一個典型的編譯程序通常由哪些部分組成

1、詞法分析

詞法分析的任務是對由字元組成的單詞進行處理,從左至右逐個字元地對源程序進行掃描,產生一個個的單詞符號,把作為字元串的源程序改造成為單詞符號串的中間程序。執行詞法分析的程序稱為詞法分析程序或掃描器。

2、語法分析

編譯程序的語法分析器以單詞符號作為輸入,分析單詞符號串是否形成符合語法規則的語法單位,如表達式、賦值、循環等,最後看是否構成一個符合要求的程序,按該語言使用的語法規則分析檢查每條語句是否有正確的邏輯結構,程序是最終的一個語法單位。

3、中間代碼生成

中間代碼是源程序的一種內部表示,或稱中間語言。中間代碼的作用是可使編譯程序的結構在邏輯上更為簡單明確,特別是可使目標代碼的優化比較容易實現。中間代碼即為中間語言程序,中間語言的復雜性介於源程序語言和機器語言之間。

4、代碼優化

代碼優化是指對程序進行多種等價變換,使得從變換後的程序出發,能生成更有效的目標代碼。所謂等價,是指不改變程序的運行結果。所謂有效,主要指目標代碼運行時間較短,以及佔用的存儲空間較小。這種變換稱為優化。

5、目標代碼生成

目標代碼生成是編譯的最後一個階段。目標代碼生成器把語法分析後或優化後的中間代碼變換成目標代碼。

(2)為何在編譯程序中要採用中間語言擴展閱讀:

編譯程序把用高級程序設計語言書寫的源程序,翻譯成等價的機器語言格式目標程序的翻譯程序。編譯程序屬於採用生成性實現途徑實現的翻譯程序。它以高級程序設計語言書寫的源程序作為輸入,而以匯編語言或機器語言表示的目標程序作為輸出。

編譯出的目標程序通常還要經歷運行階段,以便在運行程序的支持下運行,加工初始數據,算出所需的計算結果。

編譯程序的實現演算法較為復雜。這是因為它所翻譯的語句與目標語言的指令不是一一對應關系,而是一多對應關系;同時也因為它要處理遞歸調用、動態存儲分配、多種數據類型,以及語句間的緊密依賴關系。

但是,由於高級程序設計語言書寫的程序具有易讀、易移植和表達能力強等特點,編譯程序廣泛地用於翻譯規模較大、復雜性較高、且需要高效運行的高級語言書寫的源程序。

3. 編譯程序是不是一定要產生中間代碼

是的,中間代碼的意義就是微軟推出.NET平台的意義
NET是Microsoft面向XMLWeb服務的平台,這種下一代的軟體將使用一種統一、個性化的方式將我們的信息、設備和人員緊密聯系在一起。

4. 使用中間代碼表示有哪些優點

1、中間代碼是源程序的一種內部表示,或稱中間語言。
2、中間代碼的作用是可使編譯程序的結構在邏輯上更為簡單明確,特別是可使目標代碼的優化比較容易實現中間代碼,即為中間語言程序,中間語言的復雜性介於源程序語言和機器語言之間。
3、中間語言有多種形式,常見的有逆波蘭記號、四元式、三元式和樹。

5. 中間語言的名詞解釋

中間語言 ,在計算機科學中,是指一種應用於抽象機器 的編程語言,它設計的目的,是用來幫助我們分析計算機程序。這個術語源自於編譯器,在編譯器將源代碼編譯為目的碼的過程中,會先將源代碼轉換為一個或多個的中間表述,以方便編譯器進行最佳化,並產生出目的機器的機器語言。通常,中間語言的設計與一般的機器語言有三個不同之處:
1、每個指令代表僅有一個基本的操作。舉例來說,在微處理器中出現的shift-add定址模式在中間語言不會出現。
2、指令集內可能不會包含控制流程的資訊。
3、暫存器可用的數量可能會很大,甚至沒有限制。

6. C# 為什麼要弄成中間代碼

1、因為c語言也不能說真正的跨平台,只是這種語言比較低級,各個平台的實現相對一致。
c語言的東西下載時還是會分平台的,比如for linux, for windows, for Mac等,不同平台的編譯器對c的解釋都有差異,所以只能說跨平台容易一些。
2、按微軟的規劃,以後的應用程序要從網上付費下載來使用,這樣就帶來下載軟體的安全與否的問題,而C#經編譯後形成的是中間代碼,不可以在本地機器上直接執行,必須經過CLR轉換成本地代碼後才能執行。
這樣,中間碼可以順利通過防火牆,而且安全性又有CLR來保證。

7. 編譯程序中安排中間代碼生成的目的是哪3個

1.中間代碼生成是為優化和移植而進行的
2.中間代碼表示包含的符號的屬性信息
3..

8. .NET程序首先被編譯成中間語言IL,IL經過再次編譯後才生成機器碼。這樣做有什麼好處

方便獨立開發語言和虛擬機吧。
還有這樣就可以兼容各種語言,生成相同的il。

熱點內容
河源市微稅平台伺服器地址 發布:2024-05-16 20:11:19 瀏覽:149
資料庫刷數 發布:2024-05-16 19:59:06 瀏覽:364
小數如何存儲 發布:2024-05-16 19:53:52 瀏覽:214
html頁面緩存設置 發布:2024-05-16 19:33:29 瀏覽:143
雲伺服器為什麼安裝不上補丁 發布:2024-05-16 19:27:18 瀏覽:340
新加坡幸運28規律演算法 發布:2024-05-16 19:27:12 瀏覽:597
安卓菜鳥裹裹怎麼標記已取件 發布:2024-05-16 18:59:36 瀏覽:544
安卓手機可以在哪個平台直播 發布:2024-05-16 18:59:14 瀏覽:549
小紅書上傳不動 發布:2024-05-16 18:50:46 瀏覽:39
為什麼安卓手機雙清不卡頓 發布:2024-05-16 18:49:51 瀏覽:104