目录
【一】、引论
一、编译器
1、编译器
2、编译器与解释器
3、编译器结构
【一】、引论
一、编译器
1、编译器
(1)编译器:将人类易懂的 高级语言 翻译成 硬件可执行的目标机器语言
(2) 高级语言
⚫ 直接面向开发者
⚫ 与数学公式类似
⚫ 编程效率高
(3)机器语言
⚫ 驱动硬件完成具体任务
⚫ 编程效率低
2、编译器与解释器
(1)编译器 (compiler)
⚫ 读入以某种语言编写的 源程序
⚫ 输出等价的用另一种语言编写的 目标程序
⚫ 通常目标程序是 可执行 的
⚫ 如C语言编译器GCC
(2) 解释器 (interpreter)
⚫ 直接利用用户提供的输入,执行源程序中指定的操作
⚫ 逐行转译运行,不需要生成和执行目标程序
⚫如Python解释器
3、编译器结构
编译器=分析部分(前端部分是 机器无关) +综合部分 (后端部分是 机器相关)
(1) 分析 (analysis) 部分(前端)
⚫ 把源程序分解成组成要素,以及相应的语法结构
⚫ 使用这个结构创建源程序的中间表示
⚫ 同时收集和源程序相关的信息,存放到符号表
(2) 综合 (synthesis) 部分(后端)
⚫ 根据中间表示和符号表信息构造目标程序
二、编译程序和解释程序
1、编译程序
把高级语言设计的源程序(面向人的)翻译成等价的低级程序设计语言(面向硬件的)、即机器语言或汇编语言。
2、源程序的两种执行方式
(1)翻译:使用翻译程序,将源程序翻译成为低级语言目标程序,然后执行目标程序。
(2)解释:使用解释程序,对源程序逐个语句边解释边执行。
3、编译程序和解释程序的主要区别
是否生成目标程序,运行时的存储分配。
三、编译过程
1、编译过程的概述
词法分析-> 语法分析 -> 语义分析+中间代码生成 -> 中间代码优化 -> 目标代码生成 -> 目标代码