语言处理器

来源:互联网 发布:淘宝客佣金计算规则 编辑:程序博客网 时间:2024/06/11 19:24

程序设计语言是向人以及计算机描述计算过程的记号。计算机上运行的软件都是由某种程序设计语言编写的,在一个程序可以运行之前,它首先需要被翻译成一种能够被计算机执行的形式。

完成这项翻译工作的软件系统被称为编译器。

如果目标程序是一个可执行的机器语言程序,那么它就可以被用户调用,处理输入并产生输出。

解释器是另一种常见的语言处理器。他并不提供翻译的方式生成目标程序。从用户的角度来看,解释器直接利用用户提供的输入执行源程序中指定的操作。

在把用户输入映射成输出的过程中,由一个编译器产生的机器语言目标程序通常比一个解释器快很多。然而,解释器的错误诊断效果通常比编译器更好,因为它逐个语句执行源程序。

除了编译器以外,创建一个可执行程序还需要其他一些程序,一个源程序可能被分割成多个模块,并存放于独立的文件中。把源程序聚合在一起的任务有时会由一个被称为预处理器的程序独立完成。预处理器还负责把那些成为宏的缩写形式转换为源语言的语句。

然后,将经过预处理的源程序作为输入传给一个编译器。编译器可能产生一个汇编语言程序作为其输出,因为汇编语言比较容易输出和调试。接着,这个汇编语言程序由成为汇编器的程序进行处理,并生成可重定位的机器代码。

大型程序经常被分为多个部分进行编译,因此,可重定位的机器代码有必要和其他可重定位的代码以为库文件连接到一起,形成真正在机器上运行的代码。一个文件中的代码可能指向另一个文件中的位置,而链接器能够解决外部内存地址的问题。最后加载器把所有的可执行目标文件放到内存中执行。