Skip to content

2022年 408 计算机组成原理 第 20 题

计算机组成原理2022年选择题2分

题目

将高级语言源程序转换为可执行目标文件的主要过程是( )。

错因

B

把"汇编"和"编译"顺序颠倒——把汇编当成"先把源码翻译成机器语言"。但汇编针对的是汇编代码(输入是 .s/.asm 文件),而编译器才是把**高级语言(.c)→ 汇编代码(.s)**的步骤。先编译生成汇编、再汇编生成机器目标文件,这是固定顺序。

C

把链接放在汇编之前。链接的输入是已经汇编完成的多个目标文件(.o)——把它们合并、解析符号、分配地址。如果链接在汇编之前,根本就没 .o 文件可链接。

D

完全乱序:① 汇编先于编译——同 B 的错;② 链接放在了编译前——同 C 的错。

总解析

完整编译链(以 C 语言为例)

步骤工具输入输出任务
预处理cpphello.chello.i展开宏、#include、#define、条件编译
编译cc1hello.ihello.s高级语言 → 汇编代码(语法分析、优化、生成目标平台汇编)
汇编ashello.shello.o汇编代码 → 机器码(可重定位目标文件,含未解析的符号引用)
链接ldhello.o + 库hello(可执行)合并多个 .o、解析符号、分配运行时地址、生成可执行文件

记忆口诀:"先处理(去掉 # 开头的指令),再译成汇编,编成机器码 .o,最后接成 .exe / a.out"。

反向核对:每一步的输入必须是上一步的输出 —— 这条规则能瞬间排除任何顺序错误的选项。

最终答案是 A(预处理 → 编译 → 汇编 → 链接)

易错点

  1. 编译 vs 汇编:编译是 C → 汇编代码,汇编才是汇编代码 → 机器码。两者的输入输出必须对得上
  2. 链接是最后一步——它的输入需要 .o 文件,所以一定排在汇编之后
  3. 命令行 gcc -E / -S / -c 分别对应预处理 / 编译至汇编 / 汇编至 .o,可以亲自跑一遍加深印象

最后更新:

⚠️ 这道题暂未配可视化,欢迎在 CodeBrick 反馈区告诉我们你想看哪道题