1.1.4 编译器
将C++(www.cppentry.com)等高级语言翻译成机器语言的程序称为编译器。编译器是一种特殊程序,它的输入(或数据)是一个程序,输出的又是一个程序。为避免混淆,一般将输入程序称为源程序或源代码,编译器输出的程序则称为目标程序或目标码。码或代码一词常用于表示程序或程序的一部分。说到目标程序时,通常会使用目标码一词。现在,假定你希望运行自己写的一个C++(www.cppentry.com)程序。为了让计算机遵循C++(www.cppentry.com)指令,要采取以下步骤。首先,运行编译器,将C++(www.cppentry.com)程序作为数据提供给编译器。注意,在这种情况下,C++(www.cppentry.com)程序不被视为一系列要执行的指令。对于编译器来说,C++(www.cppentry.com)程序不过是一系列字符串。输出的仍是一系列字符串,即C++(www.cppentry.com)程序的机器语言版本。接着,要运行这个机器语言版本,向它提供平常我们以为是提供给C++(www.cppentry.com)程序的数据。如果有两台计算机,就更容易理解这一基本过程,如图1.4所示。但事实上,这个过程是在同一台计算机上完成的,只不过用了两次计算机。
|
| 图1.4 编译和运行C++(www.cppentry.com)程序(基本过程) |
编译器
编译器是一种特殊的程序,它能将高级语言程序(比如C++(www.cppentry.com)程序)翻译成机器语言程序,使计算机能直接理解并执行。
翻译和运行C++(www.cppentry.com)程序的完整过程比图1.4的"基本过程"稍微复杂一些。任何C++(www.cppentry.com)程序都会用到一些已编制好的操作(比如输入和输出例程)。这些操作已进行了编译,并生成了相应的目标码。它们等待着与你的程序的目标码合并,以生成一个完整的能够在计算机中运行的机器语言程序。在这个过程中,要由另一个名为链接器的程序将事先准备好的目标码与基于你的C++(www.cppentry.com)程序而生成的目标码合并。图1.5展示了编译器与链接器的交互。但在目前的大多数系统中,这个链接过程都是自动完成的。所以,一般不用关心链接问题。
|
| 图1.5 运行C++(www.cppentry.com)程序之前的准备工作 |
链接
C++(www.cppentry.com)程序的目标码必须与程序用到的例程(比如输入和输出例程)的目标码合并。合并目标码的过程称为链接,由名为链接器的程序完成。简单程序的链接过程可能自动完成。
自测题
1. 计算机的5个主要部件是什么?
2. 一个对两个数字进行相加的程序,它的数据是什么?
3. 一个为学生分配字母成绩的程序,它的数据是什么?
4. 机器语言程序和高级语言程序的区别是什么?
5. 编译器有什么作用?
6. 什么是源程序?什么是目标程序?
7. 什么是操作系统?
8. 操作系统的作用是什么?
9. 你上这门课时的计算机运行的是什么操作系统?
10. 什么是链接?
11. 你用的编译器是否具有自动链接功能?