编译原理与编译构造 Intermadiate Code Generation
来源:互联网 发布:磁选机选矿的数据分析 编辑:程序博客网 时间:2024/06/08 19:41
本文来自伟大的七米八同学。
先打一发广告,我这个博客一开始就是用于记录算法的学习过程的,后来干脆想着把课堂笔记也整理整理放上来。想想这学期快结束了,下学期开始又要开始学习算法啦。我是准备从0开始学习的,借助于高中生信息学竞赛的平台。欢迎各位各类同学加进来,笑着问我为什么刷那么慢,或者跟我一起从0开始。欢迎对照对边导航栏,对准“算法向”的“洛谷”查看进度,刷完这个之后会继续刷USACO。
群号是⑥⑥①⑨②2025,这是我设置的一道很低的门槛用来阻止广告的。入群的验证暗号是:我爱编译原理
中间代码表示形式
有两种
①三地址码
这是人用的方法,是中缀表达式,例:
②四元组
这是机器用的方法,是前缀表达式
TAC(三地址码)
最后三行是函数,函数的好处是:①复杂程序更清晰,②共同逻辑代码重用,参数化
汇编中只有
最简单的条件表达式:
其中
对于连续空间的值处理,C语言引入了数组,有以下的形式其实都是与数组相关的:
其中的
如下图所示:
注意:在使用三地址码的时候,是不允许
结论
对于下面的形式
写成
注:书上其实有多个形式,这里只记录了一个。详见龙书6-4-1
注:此处的
例1:
例2:
例3:
i = 1;a = 0;while(i <= 10) { a = a + 1; i = i + 1;}
i = 1a = 0L1: t1 = (i <= 10) if(t1 == 0) goto L2 t2 = a + 1 a = t2 t3 = i + 1 i = t3 goto L1L2
例4:
if(a<>b) { x = 1}
t1 = (a <> b)if(t1 == 0) goto L1x = 1L1
例5:
if(a <> b) { x = 1} else { x = 2}
t1 = (a <> b)if(t1 = 0) goto L1x = 1goto L2 // 这句很重要L1: x = 2L2:
例6:
a开始地址:addrA
数组元素大小:w
平面结构
故
其中
在C语言中,
转化成TAC:
上面部分是固定的,与下标无关
上面这三个式子是下标有关的
整理不动了。。。。
- 编译原理与编译构造 Intermadiate Code Generation
- 编译原理与编译构造 目录
- 编译原理与编译构造 LR文法
- 编译原理与编译构造 由语言构造文法1
- 编译原理与编译构造 由语言构造文法2
- 编译原理与编译构造 预测分析程序的构造
- 编译原理与编译构造 课堂笔记1 导论
- 编译原理与编译构造 课堂笔记2
- 编译原理与编译构造 文法的优化1
- 编译原理与编译构造 文法的优化2
- 编译原理与编译构造 二义文法
- 编译原理与编译构造 由NFA变为DFA
- 编译原理与编译构造 课堂笔记9
- 编译原理与编译构造 二义文法的处理、语义
- 编译原理与文法
- 《编译原理及编译程序构造》-词法分析
- 编译原理 子集构造法实现
- 自己动手构造编译原理 & CSAPP 笔记
- nyoj 3 多边形重心问题(数学)
- gcd + rmq + 二分遍历 hdu 5726
- 在浏览器地址栏输入百度网址之后的故事(面试必考)
- 异常处理
- kylin java查询
- 编译原理与编译构造 Intermadiate Code Generation
- linux下运行文件为什么要加./
- voj 1067 经典矩阵7 递推+矩阵快速幂
- 本人菜鸟,求助,为何不能输出
- 机器学习:决策树--python
- 软件工程(C编码实践篇)主观题总结
- 循环输出
- kuangbin并查集分析
- hdu2759 Billbord(线段树)