目录
-
计算机语言的发展
- 机器语言
- 汇编语言
- 增加了助记符
- 高级语言
- 命令语言
- 及功能封装为特征
-
翻译系统
- 编译程序:
- 高级语言程序-->汇编/机器语言程序
- 整篇提交
- 解释程序:
- 单句提交
- 其他翻译系统:
- 。。。。
- 编译程序:
-
编译系统的功能分析
-
编译程序的总体程序
-
模块分类
- 一共对应8个模块
- 分析
- 词法分析
- 语法分析
- 语义分析
- 翻译
- 中间代码生成
- 代码优化
- 目标代码生成
- 辅助
- 符号表管理
- 出错管理
- 分析
- 一共对应8个模块
-
编译逻辑过程:
- 词法分析
- 对每一个符号,每一个运算符到要进行语法分析
- 词法分析器:
- 功能:扫描并生成
- 输入:字符串
- 输出:
- 语法分析
- 功能:
- 依次分析
- 依据原程序的语法规则将源程序的单词序列组成语法短语(表示成语法树)
- 简单概括:将分离出来的单词再重新组成句子
- 语法规则:核心,重点掌握
- 语法分析器:
- 功能
- 发现各级语法成分的组成和结构
- 指出语法错误,制导翻译
- 输入:
- Token序列
- 输出
- 语法成分
- 功能
- 功能:
- 语义分析
- 功能
- 分析有语法分析器给出的语法单位的语义
- 功能
- 中间代码生成
- 方式
- 波兰表示
- 四元组表示
- 三元组表示
- 逆波兰表示
- 波兰表示
- 输入
- 语法序列
- 输出
- 三元组或四元组
- 取决于使用的哪一种中间代码
- 三元组或四元组
- 方式
- 代码优化
- 与机器无关的优化
- 常量合并
- 循环优化
- 与机器有关的优化
- 利用寄存器
- 体系结构
- 存储策略
- 任务划分
- 与机器无关的优化
- 目标代码生成
- 表格管理
- 在上面的6个过程中都会用到
- 管理各种符号表(常量、变量、标号、过程、结构。。。)
- 错误处理
- 在上面的6个过程中都会用到
- 词法分析
-
编译的遍
- 一般一段程序都需要多遍的扫描
- 只有特别简单的代码才可能一遍扫描
-
编译的前端与后端
- 前端
- 与源语言有关,与目标机无关的部分
- 后端
- 与目标机有关的部分
- 前端
-
-
编译程序的生成
- 设计目标
- T型图
- 交叉编译
- 可以用自己机器上的编译器帮别的机器编译
- 利用自身编译器
- 利用自身的编译器也可以编写一个新语言的编译器
- 编译程序的自展技术
- 人话:机器上本来只有c语言的编译器,如何做出别的语言的编译器呢?
- 基本原理:滚雪球
- 利用编译程序自动生成器
- LEX
- 自动生成词法分析程序
- YACC
- 自动生成语法分析程序
- LEX
-
编译技术的应用