源程序、目标程序、汇编程序、编译程序、解释程序之间的关系 翻译程序是这样一种程序:它能把用甲种语言编写的程序翻译成在功能上与之等价的用乙种语言编写的程序。我们把甲种语言称为源语言,把乙种语言称为目标语言。用源语言编写的程序称为源语言程序(简称源程序source program),而翻译后的用目标语言书写的程序称为目标语言程序(简称目标程序object program)。 如果源语言是汇编语言,目标语言是机器语言,这个翻译程序就称为汇编程序(as_sembler)。如果源语言是某一高级语言,目标语言是机器语言,这个翻译程序就根据具体情况,分别称为编译程序(compiler)或解释程序(interpreter)。 由于各种高级语言的语法和结构不同,所以它们的翻译程序也不同。每种语言都有自己的翻译程序,互相不能代替。所谓某种类型的计算机配有某种语言,是指该机上已配置该语言的翻译程序。这样,用户用该语言编写程序后,经过该语言的翻译程序的翻译,计算机就可以执行了。 翻译程序在早期是用机器语言或汇编语言编写的,费时费力。现在已经研制出了能书写翻译程序的高级语言,如PASCAL语言、C语言等。这种语言也称为系统设计语言。 高级语言的翻译程序具体分为两种:解释程序和编译程序。 解释程序对源程序边扫描边翻译,按照源程序描述的过程,一个语句、一个语句地解释执行,它不产生目标程序。或者更准确地说,它产生的是短暂的(transient)目标程序。但没有对应于整个源程序的一个完整、单独的目标程序存在。程序执行时,源程序和解释程序都参加。这种解释方式运行速度慢,但便于进行人机会话,随时可修改执行中的源程序。如BASIC语言、LOGO语言的版本大多是用解释程序处理的。 编译程序对源程序经过加工处理之后,产生一个与之完全等价的永久的( permanent)目标程序,然后去执行目标程序。由于执行时与源程序和编译程序完全无关,所以一个源程序一旦编译成功后,在使用时只要执行其目标程序就可以了。这样,程序执行时间少,速度快,但是这种编译方式不灵活,如果要修改源程序,就必须再重新编译。目前使用的高级语言FORTRAN、PASCAL、C()BOL等都采用编译程序进行处理,BASIC、LOGO语言也有用编译程序处理的版本。 上述三种翻译程序的处理过程可分别图示如下。汇编程序处理过程如图所示: 绘制程序 ↓ 汇编语言源程序→机器语言目标程序→执行结果 执行 图8.1汇编程序处理过程解释程序处理过程如图8.2所示: 解释程序 ↓ 高级语言源程序→执行结果 解释并执行 图8.2解释程序处理过程编译程序处理过程如图8.3所示: 编译程序 ↓ 高级语言源程序→机器语言目标程序→执行结果 编译 执行 对一个计算机程序来说,源程序是它的“书写形式”(written form或written version),也是它的“人读形式”(human - readableform);目标程序是它的“工作形式”(workingform或working version),也是它的“机读形式”(machine - readable form)。 通常散发或出售程序是散发或出售该程序的目标代码。这比散发或出售源代码有几个好处。例如,运行目标代码比对源代码边解释边执行要快得多;当以目标代码形式给出程序时,程序中所包含的技术秘密(know - how)不容易被他人获取。 某些计算机语言(如COBOL)程序,只能够以目标码形式运行,即程序必须首先经过编译。而另一些计算机语言(如BASIC)程序,则既可以经编译生成目标码后运行之,也可以按解释的方式运行,即在运行该程序时由解释程序将源码逐行转换为暂时的目标码。
源程序、目标程序、汇编程序、编译程序、解释程序
最新推荐文章于 2022-09-16 10:27:46 发布