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

如果我将DAG用作IR,我如何使用backpatching方法来处理语句?有了四倍,这将很容易。另一方面,DAG更抽象。我将不得不将其转换为四倍。我知道。我的担心正在修补。

最佳答案

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

作弊的一种方法是只发出一种高级语言(如C),而将繁重的工作留给它的编译器(并且您可以免费获得可移植性;-)。

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

08-16 01:04