一、编译原理概述
最近在学编译原理,有点难懂,在这里总结一下编译原理的知识点,方便复习和回顾
翻译程序
- 定义:能把一种语言书写的程序(源语言程序)翻译成与之在逻辑上等价的另一种语言书写的程序(目标语言程序)的程序
解释程序
- 定义:解释、执行高级语言源程序的程序
- 特点:边翻译边执行。不产生目标代码,直接输出源程序的运行结果
编译程序
- 定义:将高级语言书写的源程序翻译成与之等价的某计算机上的汇编语言程序或机器语言程序的翻译程序
- 特点:只翻译不执行。只负责把源程序翻译成目标程序,输出与源程序等价的目标程序
汇编程序
- 定义:将汇编语言程序翻译成某台计算机上的机器语言程序的翻译程序
编译程序各阶段任务
词法分析
- 对输入的源程序进行从左到右的扫描和分解,识别出一个个单词,以单词的内部表示形式输出,并对源程序做出一些简单的处理(过滤空格、去掉注释、报告错误等)
语法分析
- 在词法分析的基础上,将单词符号组成各类语法短语,通过分析确定整个输入串是否构成语法上正确的程序。
语义分析与中间代码生成
- 对语法分析所识别出的各类语法单位,分析其含义,进行初步的翻译。包括:对每个语法单位进行静态语义审查;若无语义错误,进行中间代码的翻译。
代码优化
- 对已生成的中间代码进行加工变换,使生成的目标代码更为高效。
目标代码生成
- 把中间代码变化成特定机器上的低级语言程序
问答
计算机执行用高级语言编写的程序有哪些途径?主要区别是什么?
- 计算机执行用高级语言编写的程序主要有两种途径:解释和编译
- 解释途径下,翻译程序每读入一条源程序的语句,就将其翻译成对应功能的机器代码语句串并执行,所翻译的机器代码语句串在该句执行后不保留;编译途径下,翻译程序先把高级语言程序全部翻译成机器代码程序,再执行这个机器代码程序
- 执行速度上,高级语言程序编译后执行比解释执行速度快,但解释方式的人机界面比编译方式好,便于程序调试
- 主要区别:解释方式不生成目标程序,编译方式生成目标程序