计算机软件的发展
硬件那条线是器件越做越小,软件这条线是抽象越垒越高。两条线不是平行的:硬件每提供一个新机制,软件就把它包成一个更好用的接口,然后在上面再盖一层。
这一节内容极少,但它埋下了 1.2.4 层次结构的全部动机。
机制
三个级别的语言
| 级别 | 用什么写 | 谁来翻译 | 与机器的绑定 |
|---|---|---|---|
| 机器语言 | 二进制代码 | 不需要翻译 | 与 ISA 完全绑定 |
| 汇编语言 | 助记符(ADD、MOV) | 汇编程序(汇编器) | 与 ISA 仍然绑定 |
| 高级语言 | C、Java、Python | 编译程序或解释程序 | 基本不绑定,换平台重新翻译即可 |
三点边界:
第一,机器语言是唯一不需要翻译的。 它就是 CPU 直接执行的东西。“机器语言程序也要编译”是错的。
第二,汇编语言仍然与 ISA 绑定。 换一个 ISA,汇编代码要重写——它只是把二进制换成了人能读的写法,一条汇编指令基本对应一条机器指令。所以”汇编语言可移植”是错的。
第三,高级语言的可移植性来自”重新翻译”,不是来自”到处都能直接跑”。 同一份 .c 在两个平台各编译一次,得到的是两份完全不同的机器码。
边界辨析:编译程序 / 汇编程序 / 解释程序
三个都叫”程序”,都做翻译,但输入输出和工作方式都不同。这是本节唯一的高频考点。
输入 → 输出 特点 汇编程序(汇编器) 汇编语言 → 机器语言 基本一对一翻译 编译程序(编译器) 高级语言 → 汇编/机器语言 先全部译完,生成目标程序,再执行 解释程序(解释器) 高级语言 → 直接执行 边翻译边执行,不生成完整目标程序 判据是”生不生成一份可以单独保存、单独执行的目标程序”: 编译生成,解释不生成。
两个常见陷阱:
- ❌“解释程序比编译程序快”——反了。解释每执行一次就要翻译一次,同一段循环体被翻译
遍。 - ❌“汇编程序就是汇编语言写的程序”——“汇编程序”指的是那个翻译工具(assembler),不是用汇编写的程序。这个歧义是中文术语造成的,考题很爱用。
系统软件与应用软件
| 系统软件 | 应用软件 | |
|---|---|---|
| 服务对象 | 管理和维护计算机本身 | 面向具体用户任务 |
| 例子 | 操作系统、编译程序、数据库管理系统、语言处理程序、网络软件 | 文字处理、游戏、浏览器 |
最容易错的三个归属:
| 软件 | 归类 |
|---|---|
| 编译程序 / 汇编程序 / 解释程序 | 系统软件 |
| 数据库管理系统(DBMS) | 系统软件 |
| 用 DBMS 开发出来的图书管理系统 | 应用软件 |
判据:“服务的是机器还是人的具体业务。“
软件与硬件在功能上是等价的
同一个功能可以做成电路,也可以写成程序。 乘法可以用阵列乘法器(硬件)做,也可以用移位加的子程序(软件)做,结果一样。
但代价不一样:
| 硬件实现 | 软件实现 | |
|---|---|---|
| 速度 | 快 | 慢 |
| 灵活性 | 低,改不了 | 高,改代码即可 |
| 成本 | 高(占芯片面积) | 低 |
边界移动的方向由成本和使用频率决定:用得多、要求快的功能会被”搬进硬件”。
关联对照:「功能往硬件里搬」在全书出现四次
边界
| 说法 | 判断 | 理由 |
|---|---|---|
| ”机器语言程序需要编译后才能执行” | ❌ | 机器语言直接执行 |
| ”汇编语言可以跨平台移植” | ❌ | 与 ISA 绑定 |
| ”汇编程序是用汇编语言写的程序” | ❌ | 指的是汇编器这个工具 |
| ”解释程序比编译程序执行快” | ❌ | 解释要反复翻译 |
| ”解释程序会生成目标程序” | ❌ | 不生成,这正是判据 |
| ”编译程序属于应用软件” | ❌ | 系统软件 |
| ”软硬件功能等价,所以性能也等价” | ❌ | 只是功能逻辑等价 |
| ”高级语言完全与硬件无关” | ⚠️ | 源码级无关,但编译结果与 ISA 强相关;C 的 int 长度、字节序还会露出硬件(2.3.4) |
对照速查
| 翻译工具 | 输入 → 输出 | 生成目标程序? |
|---|---|---|
| 汇编器 | 汇编 → 机器语言 | ✅ |
| 编译器 | 高级语言 → 汇编/机器语言 | ✅ |
| 解释器 | 高级语言 → 直接执行 | ❌ |
| 记忆抓手 | 内容 |
|---|---|
| 三级语言 | 机器(不译)/汇编(绑 ISA)/高级(重新翻译即可换平台) |
| 系统软件 | 服务机器:OS、编译器、DBMS |
| 软硬件等价 | 功能等价,性能、成本、灵活性都不等价 |
考点
- 编译 / 汇编 / 解释三者的输入输出与是否生成目标程序。
- “汇编程序”的歧义。
- 系统软件与应用软件的归属,尤其是 DBMS 和编译器。
- 软硬件逻辑等价及其代价。
链接
- 🏠 返回总览:计算机组成原理第 1 章:计算机系统概述总览
- ⬅️ 上一节:1.1.1 计算机硬件的发展
- ➡️ 下一节:1.2.1 计算机系统的组成
- 🔗 软件的分层:1.2.3 计算机软件
- 🔗 完整翻译链条:4.1.1 指令系统的基本概念
- 📖 名词库:第 1 章名词库