理论教育 计算机导论:编译程序概述

计算机导论:编译程序概述

时间:2023-11-09 理论教育 版权反馈
【摘要】:图6.47编译程序功能注意所谓的源和目标程序的等价的含义是它们的功能一样。编译程序作为一个语言翻译程序,也要在翻译过程中检查源程序的语法和语义,报告一些出错和警告信息,帮助程序员更正源程序。图6.48编译程序出错功能图6.49T型图图6.50编译程序层次图编译过程和编译程序的结构编译程序完成从源程序到目标程序的翻译工作,是一个复杂的整体的过程。图6.51表示了编译的各个阶段。

计算机导论:编译程序概述

(1)什么是编译程序

编译程序是现代计算机系统的基本组成部分之一,而且多数计算机系统都含有不止一个高级语言的编译程序。对有些高级语言甚至配置了几个不同性能的编译程序。

一个编译程序的重要性体现在它使得多数计算机用户不必考虑与机器有关的烦琐细节,使程序员和程序设计专家独立于机器,这对于当今机器的数量和种类持续不断地增长的年代尤为重要。

(2)语言和翻译

语言是人类交流思想和信息的工具。如自然语言,世界上存在着许多种语言,各国之间要交流信息,就要有各种语言之间的翻译。计算机语言同样是丰富多彩的。

从功能上看,一个编译程序就是一个语言翻译程序。它把一种语言(称作源语言)书写的程序翻译成另一种语言(称作目标语言)的等价的程序。源语言通常是一个高级语言,如FORTRAN,C或Pascal。目标语言通常是一个低级语言,如汇编或机器语言。编译程序的功能如图6.47所示。

图6.47 编译程序功能

注意

所谓的源和目标程序的等价的含义是它们的功能一样。

编译程序作为一个语言翻译程序,也要在翻译过程中检查源程序的语法和语义,报告一些出错和警告信息,帮助程序员更正源程序。所以编译程序的功能也可如图6.48所示。

说到一个编译程序,一定要知道它的源语言是什么,目标语言是什么,还有它的实现语言是什么。常使用T型图来表示一个编译程序所涉及的3个语言,如图6.49所示。(www.daowen.com)

图6.49中,S表示源语言,如Java;O表示目标语言,如机器码;I表示编译器语言,如C语言。

编译程序是一种软件,是系统软件。通常认为系统软件是居于计算机系统中最靠近硬件的一层,其他软件一般都通过系统软件发挥作用。系统软件和具体的应用领域无关,如编译系统和操作系统等。编译程序也是一种语言处理系统,即把软件语言书写的各种程序处理成可在计算机上执行的程序。编译程序在计算机系统中的所在层,如图6.50所示。

图6.48 编译程序出错功能

图6.49 T型图

图6.50 编译程序层次图

(3)编译过程和编译程序的结构

编译程序完成从源程序到目标程序的翻译工作,是一个复杂的整体的过程。从概念上来讲,一个编译程序的整个工作过程是划分成阶段进行的,每个阶段将源程序的一种表示形式转换成另一种表示形式,各个阶段进行的操作在逻辑上是紧密连接在一起的。一般一个编译过程划分成词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成6个阶段,这是一种典型的划分方法。事实上,某些阶段可能组合在一起,这些阶段间的源程序的中间表示形式就没必要构造出来了。我们将分别介绍各阶段的任务。另外两个重要的工作:表格管理和出错处理与上述6个阶段都有联系。编译过程中源程序的各种信息被保留在种种不同的表格里,编译各阶段的工作都涉及构造、查找或更新有关的表格,因此需要有表格管理的工作;如果编译过程中发现源程序有错误,编译程序应报告错误的性质和错误发生的地点,并且将错误所造成的影响限制在尽可能小的范围内,使得源程序的其余部分能继续被编译下去,有些编译程序还能自动校正错误,这些工作称为出错处理。图6.51表示了编译的各个阶段。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈