当前位置:  开发笔记 > 开发工具 > 正文

最佳编译器目的地

如何解决《最佳编译器目的地》经验,为你挑选了2个好方法。

我有一些语言,我一直在建立作为口译员.当我准备好采取"下一步"时,哪些选项最适合非本地编译格式...每种格式的优缺点是什么?

我一直在寻找编译CLR或LLVM,并考虑C-midcompile几次,但我不完全确定.

我希望能够移植的一些功能如下:

    REPL - 我正在构建的语言之一支持运行时的块级评估.

    强大的宏 - 我正在构建的语言之一需要能够在标记化之前单独过滤代码,并且在标记化和解析之间的中间步骤中.

好吧,不是真的"少数",只有两个.我想我可以将我的语言支持的任何其他功能移植到"任何东西".

什么是我最好的选择,以及他们的优点/缺点?



1> Norman Ramse..:

代码生成是我的事:-)

评论几个选项:

CLR:

亲:工业支持

Con:你必须完全买入他们的打字系统; 根据你想要对类型做什么,这可能无关紧要

Con:只有Windows平台才是真正的黄金时段质量

LLVM:

专业:热情的用户社区与魅力领袖

亲:Apple的认真支持

亲:许多有趣的性能改进

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--项目.


稍微注意:您不必使用LLVM的API,而是可以使用类似汇编语言的语言.

2> blabla999..:

PRO /缺点:

CLR:

亲:CLR环境随时可用; 很多要绑定的东西

con:绑定到CLR(;-); 一些系统的目标很难或不可能(嵌入式,大型机等等.CLR impl.在非MS系统上可能不太成熟)

LLVM:

亲:独立于MS.

con:针对某些系统可能涉及移植LLVM(?); 连接到DOT-net,Java等可能很麻烦(可能需要FFI)

C作为目标语言:

亲:几乎所有目标都可能; 简单的代码生成

con:你必须实现一些VM的东西作为运行时库(GC,dynload,dyn编译等); C中很难做到一些事情(延续,回溯,堆栈跟踪,异常); 有些事情很难在C中有效且可移植(GC,动态类型,堆栈布局依赖).

Java ByteCode作为目标:

亲:可能是最大的可能目标平台(甚至移动电话和嵌入式东西); 周围有很多现有的工具; 轻松连接现有的库

con:有些东西难以实现或难以有效实现(动态类型,延续,回溯)

综上所述,我认为针对Java ByteCode可能最适合您.

编辑:实际上是一个评论的答案,但300chars是不够的.

JByteCode iffy - 我同意(作为Smalltalker,JBytecode对我来说太有限了).

从虚拟机的角度来看,我认为作为JVM可以获得相对广泛的性能,从纯慢字节码解释器到高端复杂的JITting VM(IBM).我想,CLR VM将迎头赶上,因为MS迟早会窃取并整合所有创新,并且发布加速动态翻译的技术(例如,阅读自我论文).LLVM的进展可能会慢一点,但谁知道呢.使用C,您将从免费的更好的编译器中受益,但是像C作为目标很难实现动态重新翻译等.我自己的系统使用预编译和动态编译的代码(在一个内存空间中具有所有:慢字节码解释器,JITter和预编译的静态C代码)的混合.


C代码生成看起来很容易,直到你做了6到18个月.然后突然事情变得不可能.
Java ByteCode是我一直很喜欢的东西.称之为糟糕的过去经验.他们中的任何人都有关于其内部VM功能的任何好处(除了库调用之外?)
推荐阅读
linjiabin43
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有