引论
-
什么是编译程序:
一个编译程序是一个语言翻译程序,它将源语言程序翻译成目标语言程序。
-
高级语言程序的处理过程:
需预处理的源程序--(预处理程序)-->源程序--(编译程序)-->目标汇编程序--(汇编程序)-->可重定位的机器语言程序--(连接装入程序)-->可执行的机器语言程序
-
编译程序的6个阶段及任务:
词法分析:扫描源程序字符流,识别出有词法意义的单词,返回单词的类别和单词的值,或词法错误信息
语法分析:在词法分析的基础上将单词序列分解成各类语法短语,确定整个输入串是否构成一个与发生正确的程序。
语义分析:对语法分析后的程序进行语义分析,不符合语义规则时给出语义错误信息
中间代码生成:生成容易被翻译成目标代码的中间代码。
代码优化:对中间代码进行改造,使它生成的目标代码在时间和空间上更加高效。
目标代码生成:将中间代码变成特定机器上的绝对指令代码或可重定向的指令代码或汇编指令代码。
逻辑上可分为分析阶段和逻辑阶段,词法分析、语法分析、语义分析为前端,中间代码生成和中间代码优化为中端(有时也归于前端),目标代码生成和目标代码优化为后端。
完整的编译程序还包括表格管理程序和出错处理程序。
-
解释程序与编译程序的区别:
目标代码的执行方式不同,基本原理和方法没有本质上的区别。
-
解释方式的优点:
提供一种直接的交互调试功能,容易获得较好的动态调试效果。
使用变量可不预先定义。
变量性质可动态修改。
-
解释方式的缺点:
在执行时需动态地对程序进行分析翻译,开销大,其执行速度相当于编译方式的1/10至1/100。
解释方式占用内存大
-
解释方式的特点:
不产生目标程序文件
不区别翻译阶段和执行阶段,翻译源程序的每条语句后直接执行
程序执行期间一直有解释程序守候
常用于实现虚拟机