计算机软件
1.1.2 从发展的角度看过软件,这一节从分层的角度再看一遍。两节内容有重叠,但角度不同:那一节问”怎么演变过来的”,这一节问”现在分成哪几层、每层之间靠什么翻译”。
这一节真正的价值是它定义了”源程序 / 目标程序”这对词,而下一节 1.2.4 的整个层次结构,就是把这对词重复应用五次的结果。
机制
三个级别的语言,两次翻译
只有机器语言能被硬件直接执行,上面两级都必须先翻译下来。
| 谁能直接执行 | 与 ISA 的关系 | |
|---|---|---|
| 机器语言 | 硬件直接执行 | 就是 ISA 的编码 |
| 汇编语言 | 不能,要汇编 | 绑定 ISA,换机器要重写 |
| 高级语言 | 不能,要编译或解释 | 源码基本无关,编译结果强相关 |
汇编语言与机器语言基本一一对应——这是它与高级语言最本质的区别。一条 ADD 汇编指令对应一条机器指令;一条 C 的 a[i] = b[i] + c[i]; 可能对应七八条。
边界辨析:汇编语言不属于 ISA,机器语言才属于
这条分得很细,但 4.1.1 会用它出判断题。
ISA 规定的是机器指令的二进制编码——哪几位是操作码、哪几位是寄存器号。至于人怎么把这串二进制写成文字,那是汇编器的约定。
同一条 x86 机器指令,两种汇编语法写法完全不同:
语法 写法 汇编出来的机器码 Intel mov eax, ebx完全相同 AT&T movl %ebx, %eax完全相同 操作数顺序都是反的,机器码一个字节不差。 所以汇编语法属于工具约定,不属于 ISA。
源程序与目标程序
| 定义 | |
|---|---|
| 源程序 | 用汇编语言或高级语言编写的程序 |
| 目标程序 | 翻译成机器语言后的程序 |
“目标程序”这个词有个容易混的用法:在完整的编译链条里,编译器输出的 .s 或 .o 也常被叫作”目标代码”。考试口径按上表:能被机器直接执行的那份是目标程序。 完整链条见 1.2.5。
编译与解释:判据是”生不生成目标程序”
| 编译程序 | 解释程序 | |
|---|---|---|
| 工作方式 | 一次性全部翻译完,生成目标程序 | 翻译一句、执行一句 |
| 生成目标程序 | ✅ | ❌ |
| 执行速度 | 快 | 慢 |
| 重复执行 | 目标程序可反复执行,不用再翻译 | 每次都要重新翻译 |
| 调试与跨平台 | 需重新编译 | 灵活 |
“解释程序慢”的准确理由:循环体被执行
系统软件与应用软件
| 系统软件 | 应用软件 | |
|---|---|---|
| 服务对象 | 计算机本身 | 用户的具体任务 |
| 例子 | 操作系统、编译/汇编/解释程序、数据库管理系统、网络软件、标准程序库、服务性程序(诊断、调试) | 办公软件、游戏、浏览器 |
三个高频归属:
| 软件 | 归类 | 易错点 |
|---|---|---|
| 编译程序 | 系统软件 | 常被误归应用软件 |
| 数据库管理系统 DBMS | 系统软件 | —— |
| 用 DBMS 做的图书管理系统 | 应用软件 | 与上一行只差一层 |
这一节与 OS 的接口
操作系统是系统软件里最特殊的一个:其余系统软件都是”工具”,只有 OS 直接管理硬件资源。
这条分界线是 408 里 CO 与 OS 的正式交界,1.2.4 的 M2 层就是它。
边界
| 说法 | 判断 | 理由 |
|---|---|---|
| ”汇编语言与机器语言一一对应” | ✅ | 基本一一对应 |
| ”汇编语言属于 ISA” | ❌ | 机器语言属于;汇编语法是工具约定 |
| ”解释程序生成目标程序” | ❌ | 不生成,这是判据 |
| ”解释执行比编译执行快” | ❌ | 循环体被反复翻译 |
| ”编译程序是应用软件” | ❌ | 系统软件 |
| ”源程序一定是高级语言写的” | ❌ | 汇编语言写的也是源程序 |
| ”高级语言程序可以直接在硬件上运行” | ❌ | 必须翻译成机器语言 |
| ”机器语言程序也是源程序” | ❌ | 它是目标程序 |
对照速查
| 语言 | 直接执行? | 绑 ISA? | 翻译工具 |
|---|---|---|---|
| 机器语言 | ✅ | ✅ | 不需要 |
| 汇编语言 | ❌ | ✅ | 汇编程序 |
| 高级语言 | ❌ | ❌ | 编译/解释程序 |
| 判据 | 内容 |
|---|---|
| 编译 vs 解释 | 生不生成目标程序 |
| 系统 vs 应用软件 | 服务机器还是服务业务 |
| 源 vs 目标程序 | 翻译前还是翻译后 |
考点
- 编译与解释的区别——年年出现。
- 系统软件的枚举,尤其编译程序和 DBMS。
- 汇编语言与机器语言的对应关系。
- 源程序的范围:汇编写的也算。
链接
- 🏠 返回总览:计算机组成原理第 1 章:计算机系统概述总览
- ⬅️ 上一节:1.2.2 计算机硬件
- ➡️ 下一节:1.2.4 计算机系统的层次结构
- 🔗 发展视角:1.1.2 计算机软件的发展
- 🔗 汇编语法不属于 ISA:4.1.1 指令系统的基本概念
- 💻 OS 起点:操作系统第 1 章
- 📖 名词库:第 1 章名词库