- 5
- 0
- 约1.43万字
- 约 65页
- 2017-02-11 发布于浙江
- 举报
编译器设计与实现幻灯片
1、数据结构 由于lcc的共享数据结构不多,因此可以很好的处理前端与代码生成之间的数据结构共享。 这样也有不足之处:比较其它简单的设计方法,这些结构更为复杂。 有些人认为是c语言导致这种复杂性,用定义单独结构的方法可以减少这些复杂程度。例如用面向对象语言将结构分割。 * 2、接口 lcc剔除了许多冗余部分并做了简单性假定,一次是的代码很紧凑,但是这些假定限制了接口在其他语言和机器上的应用能力。 lcc接口假定符号和无符号整数以及长整数都具有相同的长度。假定所有指针表示相同。 * 3、语法和语义分析 lcc的语法和语义分析穿插进行。 lcc采用一遍扫描的策略,与AST相比她的开销更小,速度更快。 * 4、代码生成和优化 代码生成需要综合平衡各种因素。功能强大的优化器可以产生更好的代码。但是他的速度太慢了。 就每棵树来说,lcc的指令选择是最佳的。但相邻数的代码边界处就差一些。lcc可以在最后使用窥孔优化解决。 lcc的寄存分配器比较原始,目前可以采用图的着色方法分配能力更为出色,但这样做会使代码多出很多。 * * * 1、表达式 表达式的表示: (a+b)+b*(a+b) * ADD+I ADDRG+P a MUL+I ADD+I INDIR+I INDIR+I ADD+I ADDRG+P b ADDRG+P b INDIR+I INDIR+I INDIR+I ADDRG+P
原创力文档

文档评论(0)