我想为我正在设计的一种编程语言编写一个解释器并跟踪JIT。我已经有多年使用C ++编程的经验,但是我一直在想,也许新的替代方法可能更好。在我的C ++时代,我最沮丧的事情之一就是不得不使用头文件来处理笨拙的一遍编译器模型。问题在于,并非所有语言都同样适合于此目的。对于我的跟踪JIT,我需要能够将可执行代码写入内存并具有对该代码的解释器调用。我还将需要生成的代码,以便能够回调到主机函数中。
我开始看Go,发现该语言有指针但没有指针算术。这立即使我震惊,成为一个巨大的问题。我可能很想编写自己的分配器和垃圾收集器。我将需要严格控制语言对象在内存中的布局方式,并能够获取特定字段的地址并对其进行写入。除非有解决方法,否则Go似乎不足以达到我的目的。
D语言似乎很有希望。它具有指针运算法则和调用D所需的ABI的清晰轮廓。我听说过很多关于它的好东西。它还具有垃圾回收,这对于编译器的编写非常有用,但是我仍然有一些不确定的地方:
D是否有标准库使我可以将内存块标记为可执行文件?
如果我使用自己的GC分配了自己要管理的大量内存,并且有一堆指针插入其中,那么D的垃圾收集器会带来问题吗?
根据您的经验,D与C代码的互操作性如何?加载C动态库并调用它们相当容易吗?
最后,还有整个支持方面。对于那些在linux上使用过D的人来说,工具链有多好?有什么问题吗?有没有人用D编写过JIT编译器,如果是的话,经验如何?
12345678_0001
慕神8447489
相关分类