compiler-construction - 需要一个后端编译器

标签 compiler-construction

我创建了一个生成中间代码的编译器。我没有时间为我的项目编写后端。

有什么软件可以用来评估生成的中间代码吗?我在哪里可以下载这个软件?

输出看起来像这样:

    t1 = 0.67596e-7
    sum = t1

    t1 = 2
    t2 = 3
    t3 = t2 + t1
    i = t3

L0:
    t1 = sum
    t2 = 20
t3 = compare(t1 <= t2)
    t4 = sum
    t5 = 12
t6 = compare(t4 ~= t5)
t7 = t3 | t6
    t8 = sum
    t9 = 20
t10 = compare(t8 > t9)
t11 = t7 & t10
if t11 true then goto L1 else goto L2
L1: 
    t1 = 2
    t2 = sum
    t3 = t2 + t1
    sum = t3

    t1 = 1
    t2 = i
    t3 = t2 + t1
    i = t3
    goto L0
L2:

谢谢阅读。

最佳答案

代码生成是我的事:-)

对几个选项的评论:

  • CLR:
  • 亲:工业支持
  • 缺点:你必须完全接受他们的类型系统;取决于你想对类型做什么,这可能无关紧要
  • 缺点:只有 Windows 平台才是真正的黄金时间质量
  • LLVM:
  • 专业人士:热情的用户社区和有魅力的领导者
  • 优点:许多有趣的性能改进
  • 缺点:有点复杂的界面
  • 缺点:工程漏洞的历史;随着 LLVM 的成熟,希望通过增加接口(interface)的复杂性来填补工程中的漏洞
  • C--
  • 优点:目标是一种实际的书面语言,而不是 API;您可以轻松地检查、调试和编辑您的 C-- 代码
  • 优点:设计相当成熟且相当干净
  • Pro:支持准确的垃圾回收
  • 优点:大多数用户报告它非常易于使用
  • 缺点:非常小的开发团队
  • 缺点:截至 2009 年初,仅支持三个硬件平台(x86、PPC、ARM)
  • 缺点:不附带垃圾收集器
  • 缺点:项目的 future 不确定
  • C 作为目标语言
  • 亲:看起来很简单
  • 缺点:几乎不可能获得不错的性能
  • 缺点:从长远来看会让你发疯;询问那些尝试使用这种技术编译 Haskell、ML、Modula-3、Scheme 等的人。在某些时候,这些人中的每一个人都放弃了并构建了自己的 native 代码生成器。

  • 摘要:除了 C 之外的任何东西是一个合理的选择。对于灵 active 、质量和预期生命周期的最佳组合,我可能会推荐 LLVM。但是您的示例代码非常接近 C--,因此这可能是一个优势。

    全面披露:我隶属于 C-- 项目。

    关于compiler-construction - 需要一个后端编译器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/669466/

    相关文章:

    c - PIC32 取消引用指针可能是编译器错误

    c# - 为什么循环不起作用?为什么在局部变量 "y"总是 int 而 s counter = 1 = int

    c++ - 发出 native 代码(针对特定平台)

    c++ - 为什么不为基类强制执行(C++)虚拟析构函数

    java - 是否会在编译时优化局部变量的一次性使用?

    c++ - 哪个编译器用于生成 Microsoft Office for Mac?

    linux - 如何编译ARM EABI工具链?

    javascript - PEG.js-如果表达式不匹配则抛出错误

    compiler-construction - 动态和静态类型检查的优点

    java - 以 Java 运行一个简单的文本文件