编译器设计与代码生成
发布时间
阅读量:
阅读量
编译器设计-代码生成
Compiler Design - Code Generation
代码生成可被视作编译流程的最终环节。在后端代码生成过程中,优化手段能够作用于代码本身,但这一过程也可被归入代码生成阶段的一部分。由编译器所产生的代码通常为低级编程语言(如汇编语言)所对应的输出形式。此前我们已了解到,以高级语言书写的源程序将被转化为低级语言,从而生成目标代码,而该目标代码应具备如下特性:
其一,必须准确反映源程序所表达的含义。
其二,在中央处理器资源利用及内存管理方面应表现出较高的效率。
接下来我们将探讨如何将中间表示形式的代码转换为具体的目标对象代码(在此案例中为汇编语言)。
有向无环图Directed Acyclic Graph
有向无环图(DAG)是一种用于描述基本块结构的工具,有助于识别基本块之间的数据流动,并实现相应的优化操作。DAG能够对基本块进行简明的转换处理。具体而言:
DAG中的叶节点用于表示变量、名称或常量。
内部节点则代表运算操作符。
此外,内部节点还用于表示表达式的计算结果或需要存储与分配值的变量/名称。
示例:
t0 = a + b
t1 = t0 + c
d = t0 + t1

还没有任何评论哟~
