欢迎来到天天文库
浏览记录
ID:8835418
大小:30.00 KB
页数:3页
时间:2018-04-09
《编译原理高级语言解释系统(希赛教育基础学院)》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、1.3高级语言解释系统 为了实现在一个计算机上运行高级语言的程序,主要有两个途径:第一个途径是把该程序翻译为这个计算机的指令代码序列,这就是我们已经描述的编译过程。第二个途径是编写一个程序,它解释所遇到的高级语言程序中的语句并且完成这些语句的动作,这样的程序就叫解释程序。从功能上说,一个解释程序能让计算机执行高级语言。它与编译程序的主要不同是它不生成目标代码,它每遇到一个语句,就要对这个语句进行分析以决定语句的含义,执行相应的动作。下面的图示意了它的工作机理。解释程序直接对源程序中的语句进行分析,执行其隐含的
2、操作。 如执行下面的程序: 解释程序直接输出结果4。而编译程序则生成目标代码,诸如: movf#2,b movfb,R1 addf#2,R1 movfR1,a 编译系统生成的目标代码由计算机执行才能生成结果。使用编译系统时会区分编译阶段和运行阶段,编译阶段对源程序进行编译,运行阶段是指目标程序的运行。而解释系统则是边解释边执行。从存储组织来看,在编译阶段,存储区一般要有源程序缓冲区,目标代码缓冲区,名字表以及编译程序使用的源程序中间表示和各种表格等等。在运行阶段,存储区只有目标代码和数据区了。
3、对解释系统来说,在它工作的自始至终,存储区中要有源程序,名字表,标号表等表格,输入输出缓冲区以及数据区等等...1.4编译技术的发展和应用 据说第一个编译程序的出现是在20世纪50年代早期,很难讲出确切的时间,因为当初大量的实验和实现工作是由不同的小组独立完成的,多数早期的编译工作是将算术公式翻译成机器代码。用现在的标准来衡量,当时的编译程序能完成的工作十分初步,如只允许简单的单目运算,数据元素的命名方式有很多限制。然而它们奠定了对高级语言编译系统的研究和开发的基础。20世纪50年代中期出现了FORTRAN等
4、一批高级语言,相应的一批编译系统开发成功。随着编译技术的发展和社会对编译程序需求的不断增长,20世纪50年代末有人开始研究编译程序的自动生成工具,提出并研制编译程序的编译程序。它的功能是以任一语言的词法规则、语法规则和语义解释出发,自动产生该语言的编译程序。目前很多自动生成工具已广泛使用,如词法分析程序的生成系统LEX,语法分析程序的生成系统YACC等。20世纪60年代起,不断有人使用自展技术来构造编译程序。自展的主要特征是用被编译的语言来书写该语言自身的编译程序。1971年,PASCAL的编译程序用自展技术生
5、成后,其影响就越来越大。 随着并行技术和并行语言的发展,处理并行语言的并行编译技术,将串行程序转换成并行程序的自动并行编译技术也正在深入研究之中。另外嵌入式应用迅速增长的需求,推动了交叉编译技术的发展.还有系统芯片设计方法和关键EDA技术的研究,也带动了专用语言VHDL等及其编译技术的不断深化。编译实现方式的发展 -手工 机器语言 汇编 系统程序设计语言 -自动构造工具lexyaccgcc推动编译技术发展的因素 语言范型(计算模式) 计算机体系结构语言范型 -命令式(imperativel
6、anguage) -应用式(applicative) -基于规则的(rule-based) -面向对象的(object-oriented) -并行计算(parallelcomputing)体系结构 -万诺曼机体系结构 -并行体系结构 -嵌入系统编译程序执行环境 -批处理 -交互环境 -嵌入系统环境为了提高软件开发的效率和保证质量,人们除了要在软件工程中对软件开发过程所要遵循的规范化或标准化外,还尽量使用先进的软件开发技术和相应的软件工具,而大部分软件工具的开发,常常要用到编译技术和方法。实际上编译程序本身也是一
7、种软件开发工具。为了提高编程效率,缩短调试时间,软件工作人员研制了不少对源程序处理的工具。这些工具的开发不同程度地用到编译技术和方法。下面仅是一些例子。1、语言的结构化编辑器结构化编辑器是引导用户在语言的语法制导下编制程序,能自动地提供关键字和与其匹配的关键字,如if后必须有then,begin和end的配对,左右括号的配对等,这样可以减少语法上的错误,可加快对源程序的调试,提高效率和质量。 2、语言程序的调试工具调试是软件开发过程中一个重要环节,结构化编辑器只能解决语法错误的问题,而对一个已通过编译的程序来
8、说,需进一步了解的是程序执行的结果与编程人员的意图是否一致,程序的执行是否实现预计的算法和功能。这种对算法的错误或程序没能反应算法的功能等错误就需用调试器来协助解决。调试器的功能愈强,实现愈复杂,但它必须与语法分析、语义处理有紧密联系。 3、语言程序测试工具语言程序的测试工具有两种:静态分析器和动态测试器 静态分析器是对源程序进行静态地分析。它对源程序进行语法分析并制定相应表格,检
此文档下载收益归作者所有