首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >可以将LLVM字节码转换为Java字节码吗?

可以将LLVM字节码转换为Java字节码吗?
EN

Stack Overflow用户
提问于 2011-02-08 23:06:38
回答 4查看 21.6K关注 0票数 44

我听说谷歌应用程序引擎可以运行任何编程语言,这些编程语言可以通过它的JVM转换成Java字节码。我想知道是否可以将LLVM字节码转换为Java字节码,因为在Google App Engine JVM中运行LLVM支持的语言会很有趣。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-11-24 18:17:14

现在似乎可以使用LLJVM interpreter将LLVM字节码转换为Java字节码。

kraytracing.com的Grzegorz有一个有趣的Disqus comment (21/03/11),它连同代码一起解释了他如何修改LLJVM class输出例程,以发出在数量上与输入C/C++模块一致的非整体式Java类。他认为他的技术似乎避免了通常由LLJVM生成的过长的“复合”Java构造器方法参数签名,并提供了到他的修改和示例的链接。

尽管LLJVM现在看起来并不像是在积极开发中,但它仍然托管在Github上,一些文档仍然可以在它以前的存储库GoogleCode中找到:

LLJVM @ Github

LLJVM documentation @ GoogleCode

我还遇到了'Proteuscc‘项目,它也利用LLVM来输出Java Byte代码(它表明这是专门针对C/C++的,尽管我假设该项目可以修改或提供LLVM中间表示(IR))。来自http://proteuscc.sourceforge.net

使用Proteus生成Java可执行文件的一般过程可以总结如下。

  1. 生成人类可读的LLVM中间表示(ll文件)
  2. 将此ll文件作为参数传递给proteus编译系统
  3. 以上将生成可作为库执行或使用的Java jar文件

我已经扩展了a bash script to compile the latest versions of LLVM and Clang on Ubuntu,它可以作为一个Github Gist,here找到。

更新31/03/14 - LLJVM似乎已经死了一段时间了,然而Howard Chu (https://github.com/hyc)似乎已经使LLJVM与最新版本的LLVM3.3兼容。请参阅Howard's LLJVM-LLVM3.3 branch at Github, here

票数 33
EN

Stack Overflow用户

发布于 2011-02-08 23:23:58

我怀疑你是否可以,至少在没有大量的工作和运行时抽象的情况下是这样的(例如,构建半台冯诺依曼机器来执行某些操作码)。LLVM bitcode允许完整的低级不安全“做你想做的,但我们不会清理乱七八糟”的功能,从直接的,原始的,无构造函数的内存分配到完全不受检查的强制转换-真实的强制转换,而不是转换如果你愿意,-you可以将i32bitcast转换为%stuff *。此外,JVM在很大程度上是面向对象和方法的,而LLVM的人则很幸运,他们有函数指针和结构。

另一方面,看起来C can be compiled to Java bytecodeLLVM bitcode can be compiled to Javascript (尽管缺少很多特性,例如动态加载和stdlib函数),所以只要付出足够的努力,这应该是可能的。

票数 8
EN

Stack Overflow用户

发布于 2017-08-29 19:15:47

讨论较晚: Sulong在JVM上执行LLVM IR。它从LLVM IR创建可执行节点( Java对象),而不是将LLVM IR转换为Java字节码。这些可执行节点形成一个AST解释器。你可以在https://github.com/graalvm/sulong上查看这个项目,或者在http://dl.acm.org/citation.cfm?id=2998416上阅读一篇关于它的论文。免责声明:我正在做这个项目。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4934707

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档