在JVM上运行/解释C?

ami*_*kaz 24 c java interpreter jvm antlr

有没有办法在JVM上运行普通的c代码?
不通过JNI连接,运行,就像你可以通过JRuby运行ruby代码,或通过Rhino运行javascript.

如果没有当前的解决方案,您会建议我应该做什么?
显然,我想尽可能多地使用部分解决方案来实现它.

ANTLR似乎是一个很好的起点,拥有完整的"ANSI C"语法实现......
我应该使用ANTLR生成的代码在JVM上构建一个"玩具"VM吗?

joe*_*ely 13

更新日期2012-01-26:根据公司网站上的此页面,该产品已被买断,不再可用.

是.

这是一个生成JVM字节码的商业C编译器.

  • 检查时链接已损坏。 (2认同)
  • 是; 根据http://axiomsol.com/ampc-acquired-by-private-company/上的页面,该产品已被私营公司收购,不再在市场上销售. (2认同)

小智 11

还有两种可能性,都是开源的:

JPC在JVM中模拟整个x86 pc,并且能够运行DOS和Linux.

NestedVM为Java字节码提供二进制转换.这是通过将GCC编译为MIPS二进制文件来完成的,然后将其转换为Java类文件.因此,用C,C++,Fortran或GCC支持的任何其他语言编写的任何应用程序都可以在没有源更改的情况下以100%纯Java运行.


Pau*_*pes 8

也许不完全是你需要的,但商业选择是http://www.axiomsol.com/


lll*_*lll 7

看来LLJVM也能满足你的要求。

LLJVM:源代码首先由 llvm-gcc 或 clang 等前端编译为 LLVM 中间表示 (IR)。然后,LLVM IR 被转换为 Jasmin 汇编代码,与其他 Java 类链接,然后汇编为 JVM 字节码。


KIC*_*KIC 6

截至 2016 年,有一个年轻但很有前途的选择,称为gcc-bridge。它的目的是利用 JVM 的 R 实现。目标是使用用 C 或 Fortran 编写的 R 库。但是 gcc-bridge 可以作为一个普通的 maven 插件独立使用。另请参阅gcc-brigde-example