編譯器
關於程式碼產生階段之一的指令選擇(instruction selection)的說明,下列何者正確?
- A決定中介表示的運算要用目標CPU所擁有的哪一條指令來實現
- B決定作業系統要以什麼順序選擇要執行的行程
- C從原始碼中挑出以註解寫成的指令
查看答案與解析
正確答案:A. 決定中介表示的運算要用目標CPU所擁有的哪一條指令來實現
指令選擇是將中介表示的運算序列,對應到目標CPU的具體指令的處理。即使是相同的計算,各CPU可用的指令也不同,例如 a * b + c,若CPU有乘加運算(FMA)指令,就以一條指令實現,若沒有,則以乘法與加法兩條指令實現。將記憶體位址的計算整合進定址模式等,越能善用CPU的指令,就越能得到快速的程式碼。這與作業系統的排程或註解的處理無關。
- A. 正確。將中介表示的運算對應到CPU的指令。
- B. 行程的順序是由作業系統的排程器決定的。
- C. 註解在詞法分析時就被移除。