編譯器

編譯器內部使用不依賴來源語言、也不依賴CPU的中介表示(IR),其主要優點為何?

  1. A因為使用中介表示後,不必讀取原始碼就能進行編譯
  2. B因為中介表示可由CPU直接執行,所以不需要產生機器碼
  3. C因為可以將各語言專屬的前端與各CPU專屬的後端分開,且最佳化也能共用
查看答案與解析

正確答案:C. 因為可以將各語言專屬的前端與各CPU專屬的後端分開,且最佳化也能共用

要支援M種語言與N種CPU時,若依每種組合各做一個編譯器就需要M×N個,但若透過共用的中介表示,只需要M個從語言到中介表示的前端(frontend),以及N個從中介表示到CPU的後端(backend)。多數最佳化只要在中介表示上做一次,所有語言與CPU都能使用。中介表示並非CPU可直接執行的東西,最後仍需轉換為機器碼。

  • A. 一定要讀取原始碼。
  • B. 中介表示無法由CPU直接執行,必須轉換為機器碼。
  • C. 正確。可分開前端與後端,並共用最佳化。
練習這個領域 前往領域頁面

編譯器的其他題目

  1. 關於基本區塊的說明,下列何者正確?
  2. 在控制流程圖中,節點與箭頭所代表的事物,下列組合何者正確?
  3. 關於SSA形式中介表示的特徵,下列何者正確?
  4. 將上方程式碼轉為SSA形式後,if敘述之後會加入類似「x3 = φ(x1, x2)」的式子。關於此φ函數的作用,下列何者正確?
  5. 關於編譯器的常數摺疊(constant folding),下列哪個範例正確?

這個領域的比較