教育行業A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

高級語言是如何被翻譯成機器語言代碼的?

更新時間:2023年04月20日18時04分 來源:傳智教育 瀏覽次數:

好口碑IT培訓

高級語言被廣泛應用于眾多領域,但使用高級語言編寫的程序無法被計算機識別與執行。在執行之前需要先將高級語言代碼翻譯成機器語言代碼。根據不同的翻譯方式,執行分為編譯執行和解釋執行兩種。

1.編譯執行

編譯執行是指通過編譯程序(也稱為編譯器)將源代碼(source code)一次性編譯成目標程序(object code),再由計算機運行目標程序的過程,其中源代碼指由高級語言編寫的代碼。編譯執行過程如圖。

編譯執行過程

“執行”指計算機運行程序的一次過程,其中編譯器內部的執行過程大致可分為以下5個階段。

(l)詞法分析。詞法分析程序逐個讀取源代碼中的字符產生助記符表,例如逐個讀取的5個字符w、h、i、l、e會被作為助記符while放人助記符表,x、a等無法串成字符串的字符也會被視為由單個字符構成的助記符放入助記符表。詞法分析完成后,源程序由單個字符組成的字符串轉換成由助記符串聯而成的符號串。

(2)語法分析。語法分析程序以詞法分析程序生成的單詞符號串作為輸入,分析單詞符號串是否能夠形成指令。例如num、=、5這3個助記符經語法分析后構成賦值語句“num=5”。

(3)語義檢查和中間代碼生成。語義分析程序對語法分析程序生成的語句進行檢查,確保語句不存在二義性,之后生成中間代碼。中間代碼也稱為中間語言,是源程序在計算機內部的一種表現形式,其作用是幫助編譯程序優化代碼、產生目標代碼。常用的中間語言有逆波蘭記號、四元式、三元式和樹。

(4)代碼優化。代碼優化是指對程序進行多種等價變換,在不改變程序運行結果的前提下提升代碼運行效率、降低代碼所占空間。經優化后的代碼更易于生成有效的目標代碼。

(5)目標代碼生成。目標代碼生成程序將經語法分析或優化后的中間代碼轉換成目標代碼并存儲在計算機中。大多數編譯程序直接生成由機器語言編寫的目標代碼,但也有編譯程序先生成匯編語言代碼,再調用匯編程序將匯編語言代碼翻譯成機器語言編寫的目標代碼。

簡而言之,編譯即編譯器讀取源代碼至生成目標程序的過程。編譯執行方式的特點是:一次解釋,多次執行。源程序經編譯后不再需要編譯器和源代碼,目標程序可以在同類型操作系統中自由使用。編譯過程只執行一次。相比編譯速度,更重要的是編譯后生成的目標代碼的執行效率。因此編譯器一般會集成盡可能多的優化技術,以提高目標代碼的性能。

2.解釋執行

解釋執行(interpreter)與編譯執行主要的區別是翻譯時的解釋程序不產生目標代碼,且解釋器在翻譯源代碼的同時執行中間代碼。解釋執行過程如圖所示。

解釋執行流程圖

解釋器在讀入源程序時會先調用語言分析程序進行詞法分析和部分語法檢查,建立助記符表,將源程序字符串轉換為中間代碼;再調用解釋執行程序進行語法檢查,并逐條解釋執行中間代碼。簡而言之,解釋器逐條讀取源程序中的語句并翻譯,同時逐條執行翻譯好的代碼。

解釋執行的特點是:邊解釋,邊執行。解釋器中通常不會集成過多優化技術,以免解釋過程過多耗費時間,影響程序的執行速度。與編譯執行相比,解釋執行主要具有以下優點。

(l保留源代碼、程序維護和糾錯比較方便

(2)可移植性好、只要存在解釋器,源代碼可以在任意系統主運行。

高級語言的分類

根據不同的翻譯執行方式,高級語言被分為靜態語言和腳本語言兩類。靜態語言采用編譯執行方式,常見的靜態語言有C、Java等;腳本語言采用解釋執行方式,常見的腳本語言有JavaScript、PHP等。

0 分享到:
和我們在線交談!
国产免费观看黄A片又黄又硬