我的Fortran编译器的中间代码生成:DAG或四倍

时间:2014-03-13 22:56:30

标签: c compiler-construction compiler-optimization intermediate-language intermediate-code

我正在使用Flex和Bison编写一个迷你Fortran编译器。到目前为止,我已经完成了词汇和语法分析。我正在进行类型检查的语义分析,现在我必须选择一个IR。我的目标机器是MIPS。所以我想要基于MIPS IAS的最终代码生成。所以我相信一个好的IR是四倍的。但我想介绍一些优化。出于这个原因,我构建了一个DAG结构(使用哈希表)。 IR有两条路径:四路或DAG,然后是四路。

如果我使用DAG作为我的IR,我怎么能使用backpatching方法进行语句?有了四倍,这很容易。另一方面,DAG更抽象。我将被迫将其转换为四倍。我知道。我担心会回来。

1 个答案:

答案 0 :(得分:0)

我相信当你专注于高级设计时,你会担心低级细节。此外,当前的编译器不使用四元组,而是使用SSA(静态单一对齐)。对于最终的代码生成,也许看看LCC编译器,他们使用一种简单的方法通过树匹配发出本地最优代码。

欺骗的一种方法就是发出一种高级语言(比如C语言)并将繁重的语言留给它的编译器(你可以免费获得可移植性; - )。

我不知道Usenet小组comp.compilers是否以某种形式存在,但它FAQ将是我的第一站。但可能过时了。