什麼是中間程式碼表示的型別?


將原始碼轉換為目標機器的目的碼時,編譯器可以生成中間語言程式碼,稱為中間程式碼或中間文字。中間程式碼表示有三種類型:

字尾表示法

在後綴表示法中,運算子位於運算元之後,即運算子位於運算元之後。

示例

  • 表示式(a+b) * (c+d)的字尾表示法為ab + cd +*

  • 表示式(a*b) - (c+d)的字尾表示法為ab*cd+-。

語法樹

一個樹,其中每個葉節點描述一個運算元,每個內部節點描述一個運算子。語法樹是語法樹的簡寫形式。

示例 - 繪製字串a + b * c - d的語法樹。

三地址碼

三地址碼是由A-=B op C形式的語句序列組成的,其中A、B、C是程式設計師定義的名稱、常量或編譯器生成的臨時名稱,op表示運算子,可以是定點或浮點算術運算子、布林值資料或邏輯運算子。“三地址碼”這個名稱的原因是每個語句通常包含三個地址:兩個用於運算元,一個用於結果。

三地址碼語句有三種類型:

四元組表示 - 可以用帶有運算子和運算元欄位的記錄來定義三地址語句。可以使用一個帶有欄位的記錄結構,第一個欄位儲存運算子“op”,接下來的兩個分別儲存運算元1和2,最後一個儲存結果。這種三地址表示稱為四元組表示。

三元組表示 - 運算元1、運算元2和結果欄位的內容通常是指向這些欄位所描述的名稱的符號記錄的指標。因此,重要的是在生成臨時名稱時將其新增到符號表中。

這可以透過使用語句的位置來定義臨時值來避免。如果完成此操作,則只需要一個包含三個欄位的記錄結構來定義三地址語句:第一個欄位儲存運算子,接下來的兩個分別儲存運算元1和運算元2的值。這種表示稱為三元組表示。

間接三元組表示 - 間接三元組表示使用一個額外的陣列來按所需順序列出指向三元組的指標。這稱為間接三元組表示。

語句x-= (a + b)*-c的三元組表示如下:

語句語句位置運算子運算元1運算元2
(0)(1)(1)+ab
(1)(2)(2)-c
(2)(3)(3)*(0)(1)
(3)(4)(4)/(2)d
(4)(5)(5):=)(3)

更新於: 2021年11月3日

25K+ 瀏覽量

啟動您的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.