0

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

如果我使用 DAG 作为我的 IR,我如何使用 backpatching 方法进行语句?有了四倍体,这很容易。另一方面,DAG 更抽象。我将被迫将其转换为四倍。我知道。我的恐惧是回补。

4

1 回答 1

0

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

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

我不知道 Usenet 组comp.compilers是否以某种形式存在,但它的常见问题解答将是我的第一站。不过,可能已经过时了。

于 2014-03-13T23:09:14.463 回答