代码之家  ›  专栏  ›  技术社区  ›  Jørgen Fogh

Tiger编译器的目标体系结构

  •  3
  • Jørgen Fogh  · 技术社区  · 15 年前

    我正在写一封信 Tiger

    这是我的第一个编译器,但肯定不是最后一个。所以什么是好主意 第一个编译器的目标体系结构?

    我曾考虑过以CIL(.NET)为目标,但是 the book

    我还想知道当我完成这个编译器后我应该去哪里。我应该试试吗 瞄准另一个架构?我应该关注编译器的另一部分吗?为什么?

    3 回复  |  直到 15 年前
        1
  •  4
  •   halfdan    13 年前

    对于纯粹的个人满意度,没有什么可以替代 以您拥有的硬件为目标,并在裸机上运行编译后的代码

    • MIPS是一个非常干净的指令集和模拟器,如 SPIM 都是现成的。您的编译器会很简单,调试体验也会比较愉快。

    • 根据您编写编译器的原因,您可能很乐意将目标语言定位为低级编译器,如 LLVM C-- . 但是为什么其他人要从编写你的后端中获得乐趣呢?

    • 如果您有Intel或AMD硬件,我强烈建议使用带有SSE扩展的64位指令集。您将有两倍多的寄存器可以使用,并且您的浮点代码(如果有的话)将是正常的。

        2
  •  1
  •   Jon Skeet    15 年前

    如果您使用F#来编写编译器,发出CIL当然听起来是个不错的决定,因为您将能够使用CodeDOM等的所有内置功能。

    或者,您可以设计自己的输出格式,并编写一个运行在.NET内部的VM,如果这样可以使输出更容易(因为它是一个更合适的体系结构)。调试起来可能更容易——当然这也意味着编写VM:)

        3
  •  1
  •   Wojciech Bederski    15 年前

    您是否考虑过将x86程序集作为目标? 几年前我自己做了一个Tiger编译器,汇编发射器虽然很难编写,但却是整个项目中最有价值的东西之一。用C编写自己的小型VM也是一个好主意(如果不是更好的话)。

    如果您正在创建一种生产语言,那么以现有VM为目标是务实的,但会从实践中消除许多学习的可能性。

    如果我是你,我会在项目的后面仔细研究不同的优化技术。