LLVM CIL 和 Java Bytecode 后端 [已关闭]

2022-09-03 15:48:43

我看到了 http://vmkit.llvm.org/ 项目,但这并不是我想要的。不希望我的代码在另一个 VM 上运行,而是在 上运行。NET 和 Java 的 VM。

是否有任何用于LLVM的编译器后端生成.NET CIL和/或Java字节码?


答案 1

LLVM的级别比CIL和Java字节码低得多。这意味着很难将LLVM指令映射到CIL和Java指令,并且还没有人真正需要它,因此工作尚未完全完成。

不过,一些工作已经完成。请参阅 http://llvm.1065342.n5.nabble.com/JVM-Backend-tp41356.html,看看它是否对您有用。


EDIT 2020-09-03:自从这个答案被写出来以来,WebAssembly已经被定义了,它本质上是一个跨平台的机器语言定义,可以在所有主流浏览器中运行,并希望很快也能在Linux和其他浏览器上原生运行。我认为未来一切都将以这种格式分发,然后在适当的虚拟机上运行。这很可能会结束CPU战争。


答案 2

C++可以编译为CIL(使用可视C++/ CLI编译器),那么为什么不为LLVM提供CIL后端呢?
我不认为它会那么复杂,因为不是.NET特定的CIL指令集
非常小/简单。将C++编译为Java要复杂得多,因为Java的字节码中没有指针指令,因此Java的字节码LLVM后端将更加复杂。

我猜MONO LLVM后端的人已经在类似的事情上工作过,但似乎他们以不同的方式利用了LLVM,因为MONO是一个C#编译器,而不是一个C++编译器。


推荐