• LLJVM提供了一套工具和图书馆的运行相对较低级别的语言(例如C)在JVM。

    C JVM码汇编提供了通过LLJVM涉及几个步骤。 源代码是第一编制,以编程中表示(IR)由一个前端,例如编程海湾合作委员会或铿锵。 编程IR然后翻译为茉莉会代码,与对其他Java类,然后组装到JVM码。

    使用编程IR作为中间表示允许更多的信息来源的程序加以保存,比以其他方式使用MIPS二进制作为中间体的代表性。

    例如,职能的映射到个人JVM方法,以及所有多功能的电话都是用当地JVM调用的说明。 这使编码链接反对任意Java类,并Java程序本身呼个别的职能中的编码。 它还允许程序可分割的跨多个类别(相当于动态联系),而不是静态链接成一个单一的类。

    看看有什么LLJVM是所有你能得到的图书馆和演示,把它们放在同一个文件夹,然后运行的演示通过命令行使用'java-罐子lljvm-demo-0.2.jar'命令。

  • LLJVM प्रदान करता है एक सेट के उपकरण और पुस्तकालयों के लिए चल रहा है अपेक्षाकृत कम स्तर भाषाओं (जैसे C) पर जेवीएम.

    सी करने के लिए जेवीएम बाईटकोड संग्रह द्वारा ही प्रदान की जाती LLJVM कई कदम शामिल है. स्रोत कोड है पहले संकलित करने के लिए LLVM मध्यवर्ती प्रतिनिधित्व (आईआर) द्वारा एक दृश्यपटल इस तरह के रूप में llvm-जीसीसी या बजना. LLVM IR है तो अनुवाद करने के लिए बेला विधानसभा कोड, लिंक अन्य के खिलाफ जावा वर्गों, और फिर इकट्ठा करने के लिए जेवीएम बाईटकोड.

    के उपयोग LLVM आईआर के रूप में मध्यवर्ती प्रतिनिधित्व की अनुमति देता है के बारे में अधिक जानकारी के स्रोत प्रोग्राम किया जा करने के लिए संरक्षित है, की तुलना में अन्य तरीकों का उपयोग करें जो एमआइपी द्विआधारी के रूप में मध्यवर्ती प्रतिनिधित्व.

    उदाहरण के लिए, कार्यों के लिए मैप कर रहे हैं करने के लिए अलग-अलग जेवीएम के तरीकों, और सभी समारोह कॉल के साथ बना रहे हैं देशी जेवीएम मंगलाचरण निर्देश. यह अनुमति देता है, कोड संकलित किया जा करने के लिए जुड़ा हुआ है के खिलाफ मनमाने ढंग से जावा वर्गों, और जावा कार्यक्रमों के लिए natively कॉल अलग-अलग कार्यों में संकलित कोड है । यह भी अनुमति देता है, कार्यक्रमों के लिए विभाजित किया जा सकता है कई वर्गों में (बराबर करने के लिए गतिशील जोड़ने के लिए है), के बजाय स्थिर रुप से जोड़ने में सब कुछ एक ही वर्ग के हैं.

    देखने के लिए क्या LLJVM है सब के बारे में आप प्राप्त कर सकते हैं, लाइब्रेरी और डेमो डाल दिया है, उन्हें एक ही फ़ोल्डर में फिर से चलाने के डेमो के माध्यम से कमांड लाइन का उपयोग कर 'जावा -जार lljvm-demo-0.2.jar' कमांड ।

  • LLJVM provides a set of tools and libraries for running comparatively low level languages (such as C) on the JVM.

    The C to JVM bytecode compilation provided by LLJVM involves several steps. Source code is first compiled to LLVM intermediate representation (IR) by a frontend such as llvm-gcc or clang. LLVM IR is then translated to Jasmin assembly code, linked against other Java classes, and then assembled to JVM bytecode.

    The use of LLVM IR as the intermediate representation allows more information about the source program to be preserved, compared to other methods which use MIPS binary as the intermediate representation.

    For example, functions are mapped to individual JVM methods, and all function calls are made with native JVM invocation instructions. This allows compiled code to be linked against arbitrary Java classes, and Java programs to natively call individual functions in the compiled code. It also allows programs to be split across multiple classes (comparable to dynamic linking), rather than statically linking everything into a single class.

    To see what LLJVM is all about you can get the library and the demo, put them in the same folder then run the demo via command-line using the 'java -jar lljvm-demo-0.2.jar' command.