一
目录
1.1 编译程序
- 翻译程序:将源程序翻译成目标程序。
- 编译程序:将一种高级语言源程序翻译成目标(低级语言)程序。
- 解释程序:以某种语言作为输入,但不生成目标程序,一边解释一边执行。
- 诊断编译程序:诊断源程序的错误。
- 优化编译程序:优化目标程序的性能。
- 交叉编译程序:在一种计算机上编译另一种计算机的程序。
第一个编译程序:Fortran (1957)
1.2 编译过程
词法分析
对源程序进行扫描,识别出单词(基本字,标识符,常数,运算符,界符)。
- 工具:正规式(正则表达式),有限自动机
参考资料:
- 正规式_正规式是什么 | CSDN
- 编译原理 —— 正规式、正规集和正则定义 | CSDN
- 有限自动机 | 知乎
- 编译原理学习笔记(三):有限自动机_有限自动机例题 | CSDN
- 编程——有限自动机 | 知乎
语法分析
对单词进行语法分析,识别出语法结构。
语义分析 & 中间代码生成,优化
分析代码的含义,进行初步的翻译
翻译成更接近目标代码的中间代码,并对中间代码进行优化。
目标代码生成
目标代码的形式:
- 绝对指令代码:可直接在内存中执行
- 可重定位代码:可在内存中执行,但需要链接器来载入
- 汇编指令代码:可在汇编程序中执行
在有写编译过程中,可以省去一些优化或者中间代码生成的步骤,这样能够减少编译时间,但是会影响目标代码的性能。