什麼是編譯器自舉?


這是一種製作自編譯編譯器的方法,它是由它要編譯的源程式語言編寫的編譯器。自舉編譯器可以編譯編譯器,因此您可以使用此編譯後的編譯器來編譯其他所有內容以及其未來的版本。

自舉的用途

自舉有各種用途,如下所示:

  • 它可以允許從實際的編譯器開始開發新的程式語言和編譯器。

  • 它允許將新功能與程式語言及其編譯器結合起來。

  • 它還允許向編譯器新增新的最佳化。

  • 它允許在具有不同指令集的處理器之間傳輸語言和編譯器

自舉的優點

自舉有各種優點,如下所示:

  • 編譯器開發可以在被編譯的高階語言中進行。

  • 它是對被編譯語言的非平凡測試。

  • 這是一個包容性的一致性檢查,因為它必須能夠重新建立其目的碼。

對於自舉,編譯器由三種語言定義:

S→它編譯的源語言。

T→它生成的目標語言。

I→用它編寫的實現語言

這些語言可以用 T 圖表示為

交叉編譯器

編譯器以其源語言、目標語言和編寫它的語言為特徵。這些語言可能大相徑庭。編譯器可以在一臺機器上執行,併為另一臺機器生成目的碼。這樣的編譯器被稱為交叉編譯器。

  • 如果它可以用執行語言 'S' 為機器 'N' 生成程式,為新語言 'L' 編寫一個交叉編譯器。

即 LsN

  • 如果當前的 S 編譯器在機器 M 上執行併為 M 生成程式,則它由 SMM 定義。

  • 如果 LSN 透過 SMM 執行,我們將得到一個編譯器 LMN,即從 L 到 N 的在 M 上執行的編譯器。

示例 - 當 SsM 在 SAA 上執行時,使用自舉建立交叉編譯器。

解決方案 - 首先,它用 T 圖表示兩個編譯器。

當 SsM 在 SAA 上執行時,將生成 SAM。

更新於:2021年10月23日

9K+ 瀏覽量

啟動您的職業生涯

完成課程獲得認證

開始
廣告
© . All rights reserved.