我正在使用 Flex 和 Bison 编写一个迷你 Fortran 编译器。至此,我已经完成了词法和句法分析。我在类型检查的语义分析中,我现在必须选择一个 IR。我的目标机器是 MIPS。所以我想要基于 MIPS IAS 的最终代码生成。所以我相信一个好的IR是四倍。但我想介绍一些优化。出于这个原因,我构建了一个 DAG 结构(使用哈希表)。IR 有 2 条路径:四倍或 DAG,然后是四倍。
如果我使用 DAG 作为我的 IR,我如何使用 backpatching 方法进行语句?有了四倍体,这很容易。另一方面,DAG 更抽象。我将被迫将其转换为四倍。我知道。我的恐惧是回补。