读《编译原理》第八章,代码生成
来源:互联网 发布:散热器转速控制软件 编辑:程序博客网 时间:2024/06/13 19:25
326/631 页
1,代码生成器设计中的问题
优先考虑正确性;把代码生成器设计得易于实现、测试和维护。
代码生成器的输入
由前端生成的源程序的中间表示形式,符号表中的信息。
受到目标机器的指令集体系结构极大影响。
目标程序
指令选择
IR 的层次
指令集体系结构本身的特性。
想要达到的生成代码质量。
寄存器分配
寄存器分配
寄存器指派
求值顺序
2,目标语言
一个简单的目标机模型
程序和指令的代价
编译及运行一个程序所需的代价。
编译时间的长短。
目标程序的大小,运行时间和能耗。
3,目标代码中的地址
静态分配
栈分配
名字的运行时刻地址
4,基本块和流图
基本块
后续使用信息
流图
将一个中间代码程序划分成为基本块后,用一个流图表示它们之间的控制流。
流图的表示方式
循环
5,基本块的优化
基本块的 DAG 图表示
DAG (有向无环图)是一个基本块转换的。
寻找局部公共子表达式
死代码消除
代数恒等式的使用
数组指引的表示
指针赋值和过程调用
从 DAG 图到基本块的重组
6,一个简单的代码生成器
寄存器和地址描述符
代码生成算法
函数 getReg 的设计
7,窥孔优化
消除冗余的加载和保存指令
消除不可达代码
控制流优化
代数简化和强度消减
使用机器特有的指令
8,寄存器分配和指派
全局寄存器分配
使用计数
外层循环的寄存器指派
通过图着色方法进行寄存器分配
9,通过树重写进行指令选择
树翻译方案
通过覆盖一个输入树来生成代码
通过扫描进行模式匹配
用于语义检查的子过程
通用的树匹配方法
10,表达式的优化代码生成
Ershov 数
从带标号的表达式树生成代码
寄存器数量不足时的表达式
11,使用动态规划的代码生成
连续求值
动态规划的算法
12,小结
阅读全文
0 0
- 读《编译原理》第八章,代码生成
- 读《编译原理》第六章,中间代码生成
- 编译原理之代码生成
- 编译原理结构框架11代码生成
- 编译原理——中间代码生成
- 编译原理实验三:中间代码生成
- 生成数据 (代码大全 第八章 )
- 编译原理课程设计_C--编译器_语法分析&代码生成
- 编译原理课程设计_C--编译器_语法分析&代码生成 - Justin
- 编译原理结构框架7语义分析与中间代码生成
- 编译原理-词法分析-语法分析-语义分析生成中间代码-python版
- 2009-02-12读书记录:《代码大全》(第一版)第八章——生成数据
- 代码生成工具原理解析
- 动态编译代码,生成dll
- 编译优化生成坏代码
- 编译c++代码,生成mex
- 编译原理之代码优化
- 第八章 TriGridDemo重点代码
- css3自定义图形的实现效果
- OpenCV编程->图像三维空间旋转并投影到XY平面
- h5废除与新增元素
- gbdt
- 软件架构设计-五视图方法论
- 读《编译原理》第八章,代码生成
- 用深度学习做个艺术画家 ——模仿实现PRISMA
- FullCalendar中事件排序方法
- 国内开源镜像站收集
- 【转】ConcurrentHashMap原理
- 常用正则表达式
- 《Java虚拟机原理图解》 1.1、class文件基本组织结构
- 300.22HashSet中添加三个Person对象
- 人工智能竟然能猜密码了 准确率高达25%