編譯器

在編譯器的暫存器配置中,使用對干涉圖著色(染色)的方法時,圖中的節點與邊所代表的事物,下列組合何者正確?

  1. A節點是指令,邊是指令的執行順序
  2. B節點是暫存器,邊是暫存器之間的連線
  3. C節點是值,邊是同時存活的關係
查看答案與解析

正確答案:C. 節點是值,邊是同時存活的關係

在干涉圖中,以變數或中間值為節點,並用邊連接在某個時間點兩者都還會被使用(存活)的兩個值。以邊相連的值需要同時存在,所以不能放入同一個暫存器。若暫存器有k個,且能以k種顏色著色,使相鄰的節點不會同色,就能把顏色直接對應到暫存器來配置。無法著色時,則把部分的值退避到記憶體(溢出,spill)。它不是表示指令順序或暫存器連線的圖。

  • A. 這不是表示指令順序的圖。
  • B. 這不是表示暫存器連線的圖。
  • C. 正確。用邊連接同時存活的值。
練習這個領域 前往領域頁面

編譯器的其他題目

  1. 在暫存器配置中發生「溢出(spill)」時,所產生的程式碼會變成怎樣?
  2. 編譯器的指令排程,其主要目的為何?
  3. 對上方函式最後的遞迴呼叫進行尾端呼叫最佳化,會有什麼效果?
  4. 關於編譯器與直譯器的差異,下列何者正確?
  5. 關於使用JIT編譯的執行環境之特徵,下列何者正確?

這個領域的比較