編譯器有哪些型別?


編譯器是一個計算機程式,它將用高階語言編寫的原始碼轉換為低階機器語言。它將用一種程式語言編寫的程式碼翻譯成另一種語言,而不會修改程式碼的定義。編譯器還會生成高效的目的碼,該程式碼針對執行時間和記憶體空間進行了最佳化。

編譯器有各種型別,如下所示:

傳統編譯器(C、C++和Pascal) - 這些編譯器將高階語言 (HLL) 中的源程式轉換為其在本地機器程式或目標程式中的等效程式。

直譯器(LISP、SNOBOL和Java 1.0) - 這些編譯器首先將原始碼轉換為中間程式碼,然後將其解釋(模擬)為其等效的機器程式碼。

交叉編譯器 - 這些編譯器在一個機器上執行,併為另一臺機器生成程式碼。交叉編譯器是一種足以生成與執行編譯器的平臺不同的平臺的可執行程式碼的編譯器。交叉編譯器工具用於為已安裝的系統或多個平臺建立可執行檔案。

增量編譯器 - 增量編譯器是一種編譯器,它只重新編譯更改的原始碼,而不是編譯完整的原始碼。

轉換器(例如,COBOL到C++) - 這些程式將從一種高階語言編譯到另一種高階語言。

即時 (JIT) 編譯器(Java、Microsoft .NET) - 這些是將中間語言(位元組碼、MSIL)轉換為可執行程式碼或本地機器程式碼的執行時編譯器。這些實現基於型別的驗證,使生成的執行程式碼更可靠。

單遍編譯器 - 在單遍編譯器中,當處理一行原始碼時,它會被掃描並提取標記。因此,檢查該行的語法並構建樹結構和一些表,其中包括有關每個標記的資料。最後,在測試語義元素的正確性後,生成程式碼。對每一行程式碼重複此過程,直到編譯整個程式。通常,整個編譯器都是圍繞解析器構建的,解析器將呼叫執行不同功能的過程。

多遍編譯器 - 編譯器掃描輸入源一次並生成第一個修改後的結構,然後掃描第一個生成的結構並生成第二個修改後的結構,依此類推,直到生成目標形式。這種編譯器稱為多遍編譯器。

提前 (AOT) 編譯器(例如,.NET ngen) - 這些是用於 Java 和 .NET 的預編譯到原生代碼的編譯器。

二進位制編譯 - 這些編譯器將一個平臺的目的碼編譯到另一個平臺的目的碼。

更新於:2021年10月22日

25K+ 瀏覽量

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告