Skip to content

2016年 408 计算机组成原理 第 12 题

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

题目

将高级语言源程序转换为机器目标代码文件的程序是( )。

错因

A

把"汇编程序"和"编译程序"混了。汇编程序(Assembler)的输入是汇编语言源程序(如 mov ax, bx),输出是机器目标代码——它处理的是"低级语言 → 机器码",不是"高级语言 → 机器码"。题面明说源是高级语言(C / Java / Pascal 等),不归汇编程序管。

B

链接程序(Linker)的输入是若干已经编译好的目标文件(.o / .obj),输出是可执行文件。它做的是"把多个目标模块拼起来 + 解析符号引用",根本不接收高级语言源代码。常被认成"生成可执行文件 = 编译",但链接是编译流水线最后一步,前面还有编译/汇编。

D

解释程序(Interpreter)也吃高级语言源程序,但它边解释边执行——每读一句源代码、立刻翻译并运行,不产生可保存的目标代码文件(如 Python、JavaScript 解释器)。题面要求"转换为机器目标代码文件",强调有持久化的目标文件产物,解释程序不符合。

总解析

核心区分:把"输入是什么、输出是什么、有没有目标文件"三个维度排齐:

程序输入输出是否生成目标文件
编译程序(Compiler)高级语言源程序机器目标代码(.o / .obj)
汇编程序(Assembler)汇编语言源程序机器目标代码
链接程序(Linker)多个目标文件可执行文件✓(但输入不是源代码)
解释程序(Interpreter)高级语言源程序直接执行结果

题目两个关键词:高级语言(排除汇编程序、链接程序)+ 目标代码文件(排除解释程序),交集只剩 编译程序

最终答案是 C(编译程序)

典型编译流水线(理解了就再不混淆):

高级语言源程序 (.c)
   │  ─── 编译程序 ───▶  汇编代码 (.s)
   │                       │  ─── 汇编程序 ───▶  目标文件 (.o)
   │                                                 │  ─── 链接程序 ───▶  可执行文件 (a.out)

最后更新:

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