Ben*_*age 39 java compiler-construction llvm
我听说谷歌应用程序引擎可以运行任何可以通过它转换为Java字节码的编程语言JVM.我想知道是否可以将LLVM字节码转换为Java字节码,因为运行LLVM支持Google App Engine的语言会很有趣JVM.
Big*_*ich 28
现在看来可以使用LLJVM解释器将LLVM IR字节码转换为Java字节码.
有一个有趣的Disqus评论从格热戈日(21/03/11)kraytracing.com这也解释了,用代码,他是如何修改LLJVM的Java类输出程序发出与输入的C同意在一些非单片Java类沿/ C++模块.他建议他的技术似乎避免了LLJVM通常生成的过长的"复合"Java Constructor方法参数签名,并提供了他的修改和示例的链接.
虽然LLJVM现在看起来并不像现在一样处于活跃开发状态,但它仍然托管在Github上,并且仍可以在其以前的GoogleCode存储库中找到一些文档:
LLJVM @ Github
LLJVM文档@ GoogleCode
我还遇到了' Proteuscc '项目,该项目还利用LLVM输出Java字节代码(它表明这是专门用于C/C++,尽管我假设项目可以修改或提供LLVM中间表示(IR)).来自http://proteuscc.sourceforge.net :
然后,使用Proteus生成Java可执行文件的一般过程可以总结如下.
- 生成LLVM中间表示的人类可读表示(ll文件)
- 将此ll文件作为参数传递给proteus编译系统
- 以上将生成一个Java jar文件,可以执行或用作库
我已经扩展了一个bash脚本来编译Ubuntu上最新版本的LLVM和Clang,它可以在这里找到Github Gist.
[ 更新日期31/03/14 ] - LLJVM似乎已经死了一段时间,但Howard Chu(https://github.com/hyc)看起来已经使LLJVM与最新版本的LLVM(3.3)兼容.请参阅Github的Howard的LLJVM-LLVM3.3分支
小智 7
我怀疑你是否可以,至少在没有大量努力和运行时抽象的情况下(例如,建立半个Von Neumann机器来执行某些操作码).LLVM bitcode允许全方位的低级不安全"做你想要的但我们不会清理乱七八糟"的功能,从直接的,原始的,无构造函数的内存分配到完全未经检查的强制转换 - 真正的强制转换,而不是转换 - 你可以把i32和bitcast它的%stuff *如果你想.此外,JVM主要面向对象和方法,而LLVM家伙很幸运,他们有功能指针和结构.
另一方面,似乎可以将C编译为Java字节码,并且可以将LLVM bitcode编译为Javascript(尽管缺少许多功能,例如动态加载和stdlib函数),因此应该可以给予足够的努力.
讨论晚了:Sulong在JVM上执行LLVM IR。它从LLVM IR创建可执行节点(它们是Java对象),而不是将LLVM IR转换为Java字节码。这些可执行节点构成一个AST解释器。您可以在https://github.com/graalvm/sulong上检出该项目,或在http://dl.acm.org/citation.cfm?id=2998416上阅读有关该项目的论文。免责声明:我正在研究这个项目。
| 归档时间: |
|
| 查看次数: |
17698 次 |
| 最近记录: |