編譯器

關於程式碼產生階段之一的指令選擇(instruction selection)的說明,下列何者正確?

  1. A決定中介表示的運算要用目標CPU所擁有的哪一條指令來實現
  2. B決定作業系統要以什麼順序選擇要執行的行程
  3. C從原始碼中挑出以註解寫成的指令
查看答案與解析

正確答案:A. 決定中介表示的運算要用目標CPU所擁有的哪一條指令來實現

指令選擇是將中介表示的運算序列,對應到目標CPU的具體指令的處理。即使是相同的計算,各CPU可用的指令也不同,例如 a * b + c,若CPU有乘加運算(FMA)指令,就以一條指令實現,若沒有,則以乘法與加法兩條指令實現。將記憶體位址的計算整合進定址模式等,越能善用CPU的指令,就越能得到快速的程式碼。這與作業系統的排程或註解的處理無關。

  • A. 正確。將中介表示的運算對應到CPU的指令。
  • B. 行程的順序是由作業系統的排程器決定的。
  • C. 註解在詞法分析時就被移除。
練習這個領域 前往領域頁面

編譯器的其他題目

  1. 關於交叉編譯器(cross compiler)的說明,下列何者正確?
  2. 以偵錯器檢視施加了最佳化而編譯的程式時,有時部分變數的值會顯示為「無法顯示」。主要原因為何?
  3. 對上方函式充分進行常數傳播、常數摺疊與無用程式碼刪除後,函式所回傳的值與剩餘的程式碼,下列何者正確?
  4. 關於編譯器詞法分析的作用,下列何者正確?
  5. 關於編譯器的語法分析所進行的工作,下列何者正確?

這個領域的比較