編譯器

從C語言的程式到產生執行檔的一般流程,下列何者正確?

  1. A連結 → 編譯 → 組譯
  2. B組譯 → 連結 → 編譯
  3. C編譯 → 組譯 → 連結
查看答案與解析

正確答案:C. 編譯 → 組譯 → 連結

C語言的原始檔,首先由編譯器轉換為接近機器碼的組合語言(或直接轉成目的檔),再由組譯器變成機器碼的目的檔。最後由連結器將多個目的檔與函式庫彙整在一起,決定函式與變數的位址,產生執行檔。在目的檔的階段,位於其他檔案中的函式位址還沒有決定。若是其他順序,前一階段的輸出就無法成為下一階段的輸入。

  • A. 連結是最後的階段。
  • B. 組譯之前需要先編譯。
  • C. 正確。依編譯、組譯、連結的順序。
練習這個領域 前往領域頁面

編譯器的其他題目

  1. 透過小視窗檢視所產生機器碼的一小段序列,並將無用的指令組合替換為更好的指令,這種最佳化稱為什麼?
  2. 在上方程式碼中,將 sq 行內展開之後接著生效的最佳化,以及其結果,下列何者正確?
  3. 關於軟體管線化(software pipelining)的說明,下列何者正確?
  4. 在嚴格的設定下,編譯器不會擅自將浮點數的加法 (a + b) + c 重新排列為 a + (b + c),其理由下列何者正確?
  5. 編譯器的自動向量化所使用的指令種類,下列何者正確?

這個領域的比較