我想制作一种编译语言。我目前正在评估后端。 到目前为止,我正在研究C,因为它的执行速度,编译速度以及一个名为TCC的小型易用编译器。
在阅读了有关将其用作中间语言的讨论后,我试图考虑如何使其与垃圾收集兼容并处理异常。到目前为止,我认为我可以解决这两个问题,但开销很大。
以下是我对其他可能后端的一些看法:
您是否可以改变主意或有更多内容添加到此列表中?
修改
我最近一直在试验LLVM。我发现他们有预编译的二进制文件,并且可以编译为本机程序集。
http://www.antlr.org/wiki/display/CS652/Generating+machine+executable+binaries+with+LLVM
以下是步骤:
答案 0 :(得分:6)
在这种情况下,LLVM可能是更好的选择。
LLVM具有Windows支持,只需要一些时间来编译
答案 1 :(得分:5)
你考虑为GCC写一个前端吗?我只是为了完整性而提到这一点 - 据我所知,后端界面非常复杂,而且代码库非常庞大且难以理解。
另一方面,GCC是一个成熟的产品,有许多专业程序员在研究它。至少,它可能为所有替代方案提供了最坚实的基础。
就个人而言,我更喜欢LLVM(激动人心的架构)或.NET的IL:非常,非常容易使用,有很棒的工具支持(Reflector,Cecil,Reflexil和最后但是尤其是.NET反射API)和两个非常有效的实现(即Microsoft的规范实现和Mono)。
但我不能在任何架构中声称拥有专业知识,所以请尽量回答这个问题。
答案 2 :(得分:4)
C ++不会给你太多,而是使用C代替。但是如果你想要在Web上使用语言,使用.NET或Java,肯定它们加载速度慢,但是当它们加载时,它们就像C一样快。
答案 3 :(得分:2)
对于SmartEiffel,我们使用C作为后端。
Tcc是一个非常好的开发选项 - 尽管不是最终版本(生成的对象相当于gcc -O0)
答案 4 :(得分:1)
添加到列表中的另一个:Slava最近在Factor backend上实现了Smalltalk。我自己没有试过这个,但我觉得它会提供更多你想要的更高级别的功能,更像是低级别的尺寸/性能。
答案 5 :(得分:1)
TCC是最佳选择。它是可移植的,它有一个库,因此它可以很容易地用作后端,称为libtcc。可执行文件小于gcc,它是ANSI C。