| 解释程序直接对源程序中的语句进行分析,执行其隐含的操作。 如执行下面的程序: ![]() 解释程序直接输出结果 4。而编译程序则生成目标代码,诸如: movf #2, b movf b , R1 addf #2, R1 movf R1, a 编译系统生成的目标代码由计算机执行才能生成结果。使用编译系统时会区分编译阶段和运行阶段,编译阶段对源程序进行编译,运行阶段是指目标程序的运行。而解释系统则是边解释边执行。从存储组织来看,在编译阶段,存储区一般要有源程序缓冲区,目标代码缓冲区,名字表以及编译程序使用的源程序中间表示和各种表格等等。在运行阶段,存储区只有目标代码和数据区了。对解释系统来说,在它工作的自始至终,存储区中要有源程序,名字表,标号表等表格,输入输出缓冲区以及数据区等等... |
|
||||||||||||||||||||
| 翻译:是按源程序的实际输入顺序,处理程 序语句,得到执行的目标程序。 解释:是按源语言的定义边解释边执行。 解释执行是按照被解释的源程序逻辑流程进行工作的。 解释执行 ① 不生成目标代码 ② 能支持交互环境(同增量式编译系统) 优点:交互方便,节省空间。 缺点:效率低。因对源程序的循环语句部分要反复解释执行。 共同点:都需进行词法、语法、语义分析。 可比喻为: -编译是笔译(产生目标程序) -解释是口译(不产生目标程序) 很多语言如BASIC,LISP和PROLOG等等最初都是解释执行的,后来也都有了编译系统。号称最具生命力的JAVA环境同时需要解释和编译系统的支持。 |