编译程序和解释程序的区别

如题所述

第1个回答  2023-08-17

编译程序与解释程序最大的区别在于:前者生成目标代码,而后者不生成。此外,编译程序产生目标代码的执行速度比解释程序的执行速度要快(若遇到循环程序,则解释程序要不断地重复解释,而编译程序只需执行一次即可)。

编译程序的功能是把用高级语言书写的源程序翻译成与之等价的目标程序。编译过程划分成词法分析、语法分析、语义分析、中间代码生成、代码优化和目标代码生成6个阶段。目标程序可以独立于源程序运行。

编译程序是一个语言处理程序,它可以把高级语言程序给语言翻译成某个机器的汇编语言程序或者是二进制代码程序。需要注意的是编译和运行是分两个阶段进行的,也就是说程序必须要全部编译完成后,才能运行。即编程方式执行程序会把源代码翻译成二进制文件的目标代码。

解释程序是一种语言处理程序,在词法、语法和语义分析方面玉编译程序的工作原理基本相同,但在运行用户程序时,它是直接执行源程序或源程序的内部形式(中间代码)。因此,解释程序并不生成目标程序。

解释程序的工作模式是一个个的获取、分析并且去执行源程序的语句,一旦第一个语句分析结束后,源程序就会开始运行并且去生成结果,它比较适合以交互方式来进行工作的情况。即解释程序不会生成目标代码。

编译过程可分为6步

1、词法分析:扫描器(Scanner)将源代的字符序列分割成一系列的记号(Token)。lex工具可实现词法扫描。

2、语法分析:语法分析器将记号(Token)产生语法树(Syntax Tree)。yacc工具可实现语法分析(yacc: Yet Another Compiler Compiler)。

3、语义分析:静态语义(在编译器可以确定的语义)、动态语义(只能在运行期才能确定的语义)。

4、源代码优化:源代码优化器(Source Code Optimizer),将整个语法书转化为中间代码(Intermediate Code),中间代码使得编译器被分为前端和后端。编译器前端负责产生机器无关的中间代码;编译器后端将中间代码转化为目标机器代码。

5、目标代码生成:代码生成器(Code Generator)。

6、目标代码优化:目标代码优化器(Target Code Optimizer)。

以上内容参考:百度百科-编译程序

相似回答