Q44.
在C 語言程式的編譯過程中,哪一過程是將組合語言轉換為CPU 可讀取並解析的目標碼(object code)?
數位電子 · 乙級 · 程式語言 · Q44
難易度分析
2 / 5
此題考查對程式轉換流程中各個步驟技術功能的精確理解,需要考生具備辨別不同語言層級轉換階段之定義的能力。
正確答案:①Assembler
① Assembler:Assembler(組合語言編譯器)負責將組合語言(Assembly Language)逐行翻譯為機器碼(Machine Code),產生 CPU 可直接執行的目標碼(Object Code)。此為編譯流程中將人類可讀的助記符轉換為二進位指令的關鍵步驟。
錯誤選項解析
- ② Compiler:Compiler(編譯器)的作用是將高階語言(如 C 語言)轉換為組合語言或低階中繼碼,而非直接產生目標碼。此選項混淆了編譯器與組合語言編譯器的職責分界。
- ③ Linker:Linker(連結器)的功能是將多個目標檔(Object Files)與函式庫(Libraries)合併,解析外部符號參考後產生最終的可執行檔(Executable)。它不負責將組合語言轉換為目標碼。
- ④ Preprocessor:Preprocessor(前置處理器)在編譯前處理巨集展開(Macro Expansion)、標頭檔引入(#include)及條件編譯(#ifdef)等指令。它僅進行文字層級的替換,不涉及任何程式碼轉換為目標碼的過程。
Learning Tip
"本題核心考點為 C 語言編譯四階段的職責劃分:前置處理(Preprocessing)→ 編譯(Compilation)→ 組合(Assembly)→ 連結(Linking)。常考陷阱在於混淆 Compiler 與 Assembler 的輸出產物——Compiler 輸出組合語言,Assembler 才輸出目標碼。實務上需熟悉 `gcc -E`、`gcc -S`、`gcc -c` 等參數對應的階段輸出檔。"
學員答題分佈
①Assembler0%
②Compiler0%
③Linker0%
④Preprocessor0%
此答題分佈是根據學員在 LongePass 模擬考等實際作答紀錄計算而成。與考友分享這道歷屆試題與詳細解析!