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

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

高級語言代碼怎樣翻譯成機器語言代碼?

更新時間:2022年11月30日14時55分 來源:傳智教育 瀏覽次數(shù):

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

1編譯執(zhí)行

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

編譯執(zhí)行
圖1 編譯執(zhí)行

圖1中的“執(zhí)行”指計算機運行程序的一次過程,其中編譯器內(nèi)部的執(zhí)行過程大致可分為以下5個階段。

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

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

(3)語義檢查和中間代碼生成。語義分析程序?qū)φZ法分析程序生成的語句進行檢查,確保語句不存在二義性,之后生成中間代碼。中間代碼也稱為中間語言,是源程序在計算機內(nèi)部的一種表現(xiàn)形式,其作用是幫助編譯程序優(yōu)化代碼、產(chǎn)生目標(biāo)代碼常用的中間語言有逆波蘭記號、四元式、三元式和樹。

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

(5)目標(biāo)代碼生成。目標(biāo)代碼生成程序?qū)⒔?jīng)語法分析或優(yōu)化后的中間代碼轉(zhuǎn)換成目標(biāo)代碼并存儲在計算機中。大多數(shù)編譯程序直接生成由機器語言編寫的目標(biāo)代碼但也有編譯程序先生成匯編語言代碼,再調(diào)用匯編程序?qū)R編語言代碼翻譯成機器語言編寫的目標(biāo)代碼。

簡而言之,編譯即編譯器讀取源代碼至生成目標(biāo)程序的過程。

編譯執(zhí)行方式的特點是:一次解釋,多次執(zhí)行。源程序經(jīng)編譯后不再需要編譯器和源代碼,目標(biāo)程序可以在同類型操作系統(tǒng)中自由使用。編譯過程只執(zhí)行一次。相比編譯速度,更重要的是編譯后生成的目標(biāo)代碼的執(zhí)行效率。因此編譯器一般會集成盡可能多的優(yōu)化技術(shù),以提高目標(biāo)代碼的性能。

2.解釋執(zhí)行

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

解釋器執(zhí)行過程

圖2 解釋器執(zhí)行過程

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

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

(1)保留源代碼,程序維護和糾錯比較方便。

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

高級語言的分類

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

0 分享到:
和我們在線交談!