需要一个后端编译器

use*_*935 7 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:
Run Code Online (Sandbox Code Playgroud)

谢谢阅读.

Nor*_*sey 13

代码生成是我的事:-)

评论几个选项:

  • CLR:

    • 亲:工业支持
    • Con:你必须完全买入他们的打字系统; 根据你想要对类型做什么,这可能无关紧要
    • Con:只有Windows平台才是真正的黄金时段质量
  • LLVM:

    • 专业:热情的用户社区与魅力领袖
    • 亲:许多有趣的性能改进
    • Con:有点复杂的界面
    • Con:工程中的漏洞历史; 随着LLVM的成熟,期望通过增加接口的复杂性来堵塞工程中的漏洞
  • C -

    • Pro:target是一种实际的书面语言,而不是API; 您可以轻松地检查,调试和编辑C--代码
    • 亲:设计相当成熟,相当干净
    • Pro:支持准确的垃圾收集
    • 专业:大多数用户报告它很容易使用
    • Con:非常小的开发团队
    • Con:截至2009年初,仅支持三种硬件平台(x86,PPC,ARM)
    • Con:不附带垃圾收集器
    • Con:项目的未来不确定
  • C作为目标语言

    • 亲:看起来很容易
    • 骗局:几乎不可能获得不错的表现
    • Con:从长远来看会让你疯狂; 询问那些尝试使用这种技术编译Haskell,ML,Modula-3,Scheme等的人.在某些时候,这些人中的每一个都放弃并构建了自己的本机代码生成器.

总结:除C之外的任何事情都是合理的选择.为了实现灵活性,质量和预期寿命的最佳组合,我可能会推荐LLVM.但是你的示例代码非常接近C--,所以这可能是一个优势.

完全披露:我隶属于C--项目.

  • 我参加聚会迟到了,但我想知道你所说的“几乎不可能获得像样的表现”是什么意思。 (2认同)
  • @KiedLlaentenn 有关于该主题的长论文,例如,请参阅 https://www.cs.tufts.edu/~nr/c--/download/pal-ifl.ps.gz 的第 3 节 (2认同)

fro*_*h42 11

看看llvm编译器基础结构项目.它被用于许多现实世界的项目中.LLVM是一个低级虚拟机,易于创建代码并易于转换为本机代码.


小智 6

你发出的代码看起来非常接近C - 没有你的编译器发出C并使用C编译器作为后端 - 这就是原始C++ cfront编译器的工作方式.