当前位置:站长之家学习教程软件教程冲浪技巧 → 文章内容

1.3 高级语言解释系统

减小字体 增大字体 作者:不详  来源:YesAdmin.Com  发布时间:2005-7-4 1:54:04
 为了实现在一个计算机上运行高级语言的程序,主要有两个途径:第一个途径是把该程序翻译为这个计算机的指令代码序列,这就是我们已经描述的编译过程。第二个途径是编写一个程序,它解释所遇到的高级语言程序中的语句并且完成这些语句的动作,这样的程序就叫解释程序。从功能上说,一个解释程序能让计算机执行高级语言。它与编译程序的主要不同是它不生成目标代码,它每遇到一个语句,就要对这个语句进行分析以决定语句的含义,执行相应的动作。右面的图示意了它的工作机理
  解释程序直接对源程序中的语句进行分析,执行其隐含的操作。
  如执行下面的程序:
  

  解释程序直接输出结果 4。而编译程序则生成目标代码,诸如:
  movf #2, b
  movf b , R1
  addf #2, R1
  movf R1, a

  编译系统生成的目标代码由计算机执行才能生成结果。使用编译系统时会区分编译阶段和运行阶段,编译阶段对源程序进行编译,运行阶段是指目标程序的运行。而解释系统则是边解释边执行。从存储组织来看,在编译阶段,存储区一般要有源程序缓冲区,目标代码缓冲区,名字表以及编译程序使用的源程序中间表示和各种表格等等。在运行阶段,存储区只有目标代码和数据区了。对解释系统来说,在它工作的自始至终,存储区中要有源程序,名字表,标号表等表格,输入输出缓冲区以及数据区等等...
编译阶段和运行阶段存储结构
源程序缓冲区
名字表
目标代码缓冲区
编译用源程序中间表示各种表格
编译时
目标代码区
数据区
运行时
解释系统存储结构
 
解释系统
源程序
工作单元
名字表
标号表
缓冲区
(输入输出)
栈区
翻译:是按源程序的实际输入顺序,处理程 序语句,得到执行的目标程序。
解释:是按源语言的定义边解释边执行。
解释执行是按照被解释的源程序逻辑流程进行工作的。



解释执行
① 不生成目标代码
② 能支持交互环境(同增量式编译系统)
 优点:交互方便,节省空间。
 缺点:效率低。因对源程序的循环语句部分要反复解释执行。
 共同点:都需进行词法、语法、语义分析。
 可比喻为:
  -编译是笔译(产生目标程序)
  -解释是口译(不产生目标程序)

  很多语言如BASIC,LISP和PROLOG等等最初都是解释执行的,后来也都有了编译系统。号称最具生命力的JAVA环境同时需要解释和编译系统的支持。