我创建了一个生成中间代码的编译器.我没有时间为我的项目编写后端.
有没有我可以用来评估生成的中间代码的软件?我在哪里可以下载这个软件?
输出看起来像这样:
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:
亲:工业支持
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--项目.
看看llvm编译器基础结构项目.它被用于许多现实世界的项目中.LLVM是一个低级虚拟机,易于创建代码并易于转换为本机代码.
你发出的代码看起来非常接近C - 没有你的编译器发出C并使用C编译器作为后端 - 这就是原始C++ cfront编译器的工作方式.