概念
翻译程序: 将一种语言程序(称为源程序)改造成另一种等价的语言程序(称为目标程序)的程序。
源语言:书写源程序的语言称为源语言.
目标语言:书写目标程序的语言称为目标语言.
翻译程序
汇编程序、解释程序、编译程序
一、汇编程序
汇编程序:把汇编语言写的源程序翻译成机器语言的目标程序,这个翻译过程称为汇编。如下图:
汇编程序一般对源程序进行两遍扫描来完成。
第一遍:进行存贮分配,造出第二遍扫描时用的各种表格;
第二遍:用机器语言操作码来代替汇编符号操作码。
二、解释程序
解释程序:将高级语言写的源程序作为输入数据,但并不产生目标程序,而是边解释边执行源程序本身的一种程序。如下图:
解释程序适合于会话型语言,如BASIC语言。
主要优点:
1.易于为用户提供调试功能,对源程序的语法分析及出错处理都很及时;
2.修改调试也很方便,但是解释程序执行速度较慢,运行效率低。
三、编译程序
1.编译程序
是将高级语言写的源程序翻译成目标语言(汇编语言、机器语言)的程序。这种翻译过程称为编译。
2.编译系统
目标程序,再加上运行系统(如服务子程序、动态分配程序、装配程序等)就可获得计算结果,整个系统称为编译系统。
编译程序执行过程
Ch1 绪论
1.1 什么叫编译程序
编译器就是一个程序,它读入用某种语言编写的源程序,并翻译成一个与之等价的另一种语言编写的源程序。
1.2 编译过程概述
编译程序的工作,从输入源程序开始,到输出目标程序结束,与自然语言之间的翻译有很多相似之处。
编译器的各个阶段
1.3 编译程序的结构
1.4 编译各阶段的组合
一、前端和后端
前端包括词法分析、词法分析、语义分析,以及相关的错误处理和符号表的建立。前端依赖于源程序并在很大程度上独立于目标机器。
后端主要包括代码优化、代码生成和相关错误处理。后端依赖于目标机器。后端处理对象是由前端产生的结果,即中间代码。
在Java中,编译采用的是前端后端方式。前端生成与平台无关的字节码,后端是由与平台有关的解释器对所生成的字节码文件进行解释执行。
二、编译的遍
编译的若干阶段通常是以一遍来实现的,每遍读一次输入文件、产生一个输出文件。
1.5 错误检测与报告
在编译的各个阶段都会发现源程序中的错误,为了使编译器能继续运行,以检测出源程序中 更多的错误,在检测到错误后,必须以合适的方式进行错误处理。