您现在的位置: 主页 > 上位机技术 > JAVA > 如何将Java bytecode编译成LLVM IR,即有没有可用的LLVM的Java前
本文所属标签:
为本文创立个标签吧:

如何将Java bytecode编译成LLVM IR,即有没有可用的LLVM的Java前

来源:网络整理 网络用户发布,如有版权联系网管删除 2018-07-23 

要回答题主的问题

如何将Java bytecode 编译成llvm ir,即有没有可用的llvm 的Java前端?
取决于题主实际要达到的目的是什么。
请问题主实际上是想得到一个免费、开源、跨平台、基于LLVM的AOT编译的解决方案么?类似GCJ之于GCC的那种?
是的话,那重点不只是一个LLVM的Java bytecode前端,更重要的是用于支撑它的配套的运行时系统。

RoboVM是一个现在还活着的、跟题主所想像的东西接近的项目。
官网:RoboVM | Create truly native iOS apps in Java
Github:robovm/robovm GitHub

它跟VMKit相似之处在于两者都尽可能使用现成的库组合起来实现JVM的功能。
例如说RoboVM的Java字节码编译器的前端使用了Soot分析框架,后端使用了LLVM
显然,LLVM作为buzzword更响亮所以各种宣传都只是突出说明RoboVM基于LLVM其实Soot的历史更久远。

RoboVM的runtime的重要组成部分之一,GC,用的是GCJ版的Boehm GC
另外,runtime的某些部分看起来“参考”了Dalvik VM。

最后放个传送门:Java中有类似于Ngen的工具(AOT编译器)吗? - RednaxelaFX 的回答

===================================================

话说鄙司在做基于LLVM的、用在JVM里的JIT编译器。暂时还没计划、但不排除未来也会做AOT。
传送门:如何看待微软新出的LLILC,一个新的基于LLVM的CoreCLR JIT/AOT编译器? - RednaxelaFX 的回答

话说回来,OpenJDK里的HotSpot VM在使用Zero/Shark VM模式编译的时候,其中的Shark JIT编译器也是基于LLVM的。那个里面自然也有一个LLVM的Java bytecode前端。但如果题主想要的是AOT功能的话,这玩儿多半没啥意义。
传送门:OpenJDK: Zero-Assembler Project,其中的前端的代码:jdk8u/jdk8u/hotspot: d4d494a56017 src/share/vm/shark/sharkBlock.cpp

              查看评论 回复



嵌入式交流网主页 > 上位机技术 > JAVA > 如何将Java bytecode编译成LLVM IR,即有没有可用的LLVM的Java前
 前端 基于 编译器

"如何将Java bytecode编译成LLVM IR,即有没有可用的LLVM的Java前"的相关文章

网站地图

围观()