-
Notifications
You must be signed in to change notification settings - Fork 0
/
llxvm-from-c-to-javanet.html
18 lines (17 loc) · 8.41 KB
/
llxvm-from-c-to-javanet.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<!DOCTYPE html><html lang="en-us"><head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width,initial-scale=1"><title>llxvm: from C to Java/.Net - mridoni's development blog</title><meta name="description" content="I just published the first public release of llxvm, a tool that allows to compile C source files to JVM bytecode (.class) or CIL/.Net (.exe/dll) and run traditional applications written in C to run in a pure-Java environment (with some caveats). llxvm is based on lljvm by David a. Roberts, a project that unfortunately has been dormant for several years and relies on a now archaic version of LLVM/clang (2.7). I made several changes to adapt it…"><meta name="generator" content="Publii Open-Source CMS for Static Site"><link rel="canonical" href="https://mridoni.github.io/llxvm-from-c-to-javanet.html"><link rel="alternate" type="application/atom+xml" href="https://mridoni.github.io/feed.xml"><link rel="alternate" type="application/json" href="https://mridoni.github.io/feed.json"><meta property="og:title" content="llxvm: from C to Java/.Net"><meta property="og:site_name" content="mridoni's development blog"><meta property="og:description" content="I just published the first public release of llxvm, a tool that allows to compile C source files to JVM bytecode (.class) or CIL/.Net (.exe/dll) and run traditional applications written in C to run in a pure-Java environment (with some caveats). llxvm is based on lljvm by David a. Roberts, a project that unfortunately has been dormant for several years and relies on a now archaic version of LLVM/clang (2.7). I made several changes to adapt it…"><meta property="og:url" content="https://mridoni.github.io/llxvm-from-c-to-javanet.html"><meta property="og:type" content="article"><style>:root{--body-font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans","Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--heading-font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans","Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--logo-font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans","Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--menu-font:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen,Ubuntu,Cantarell,"Fira Sans","Droid Sans","Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"}</style><link rel="stylesheet" href="https://mridoni.github.io/assets/css/style.css?v=c65e4b699f773de4045874d9f49bbe9c"><script type="application/ld+json">{"@context":"http://schema.org","@type":"Article","mainEntityOfPage":{"@type":"WebPage","@id":"https://mridoni.github.io/llxvm-from-c-to-javanet.html"},"headline":"llxvm: from C to Java/.Net","datePublished":"2022-01-18T12:48","dateModified":"2022-01-18T12:48","description":"I just published the first public release of llxvm, a tool that allows to compile C source files to JVM bytecode (.class) or CIL/.Net (.exe/dll) and run traditional applications written in C to run in a pure-Java environment (with some caveats). llxvm is based on lljvm by David a. Roberts, a project that unfortunately has been dormant for several years and relies on a now archaic version of LLVM/clang (2.7). I made several changes to adapt it…","author":{"@type":"Person","name":"Marco Ridoni","url":"https://mridoni.github.io/authors/marco-ridoni/"},"publisher":{"@type":"Organization","name":"Marco Ridoni"}}</script></head><body><div class="site-container"><header class="top" id="js-header"><a class="logo" href="https://mridoni.github.io/">mridoni's development blog</a></header><main><article class="post"><div class="hero"><header class="hero__content"><div class="wrapper"><div class="post__meta"><time datetime="2022-01-18T12:48">January 18, 2022</time></div><h1>llxvm: from C to Java/.Net</h1></div></header></div><div class="wrapper post__entry"><p dir="auto">I just published the first public release of llxvm, a tool that allows to compile C source files to JVM bytecode (.class) or CIL/.Net (.exe/dll) and run traditional applications written in C to run in a pure-Java environment (with some caveats).</p><p dir="auto">llxvm is based on <a href="https://github.com/davidar/lljvm">lljvm</a> by David a. Roberts, a project that unfortunately has been dormant for several years and relies on a now archaic version of LLVM/clang (2.7). I made several changes to adapt it to a more modern version of LLVM/clang (10+), removed some unnecessary tools, rewrote and expanded the linker and added other tools. Moreover, I refactored the backend's code to be able to emit CIL/.Net assembly beside JVM bytecode).</p><p dir="auto">Currently <code>llxvm</code> is able to build and run several programs and libraries: as an example libgmp, vbisam and GnuCOBOL's libcob library have been successfully compiled and run, though with some caveats (see "<a href="https://github.com/mridoni/llxvm/blob/main/notes_code_size">Notes about code size</a>" below).</p><p dir="auto">For more information, code and binaries, visit the <a href="https://github.com/mridoni/llxvm" target="_blank" rel="noopener noreferrer">GitHub repository for llxvm</a>.</p></div><footer class="wrapper post__footer"><p class="post__last-updated">This article was updated on January 18, 2022</p><div class="post__share"><a href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fmridoni.github.io%2Fllxvm-from-c-to-javanet.html" class="js-share facebook" rel="nofollow noopener noreferrer"><svg class="icon" aria-hidden="true" focusable="false"><use xlink:href="https://mridoni.github.io/assets/svg/svg-map.svg#facebook"/></svg> <span>Facebook</span> </a><a href="https://twitter.com/share?url=https%3A%2F%2Fmridoni.github.io%2Fllxvm-from-c-to-javanet.html&via=%40quasicomese&text=llxvm%3A%20from%20C%20to%20Java%2F.Net" class="js-share twitter" rel="nofollow noopener noreferrer"><svg class="icon" aria-hidden="true" focusable="false"><use xlink:href="https://mridoni.github.io/assets/svg/svg-map.svg#twitter"/></svg> <span>Twitter</span> </a><a href="https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fmridoni.github.io%2Fllxvm-from-c-to-javanet.html" class="js-share linkedin" rel="nofollow noopener noreferrer"><svg class="icon" aria-hidden="true" focusable="false"><use xlink:href="https://mridoni.github.io/assets/svg/svg-map.svg#linkedin"/></svg> <span>LinkedIn</span></a></div></footer></article><nav class="post__nav"><div class="post__nav-inner"><div class="post__nav-prev"><svg width="1.041em" height="0.416em" aria-hidden="true"><use xlink:href="https://mridoni.github.io/assets/svg/svg-map.svg#arrow-prev"/></svg> <a href="https://mridoni.github.io/gix-ide-v107-is-out.html" class="invert post__nav-link" rel="prev"><span>Previous</span> Gix-IDE v1.0.7 is out</a></div><div class="post__nav-next"><a href="https://mridoni.github.io/gix-ide-and-gixsql-108-are-coming.html" class="invert post__nav-link" rel="next"><span>Next</span> Gix-IDE and GixSQL 1.0.8 are coming </a><svg width="1.041em" height="0.416em" aria-hidden="true"><use xlink:href="https://mridoni.github.io/assets/svg/svg-map.svg#arrow-next"/></svg></div></div></nav></main><footer class="footer"><div class="footer__copyright"><p>Powered by Publii</p></div><button class="footer__bttop js-footer__bttop" aria-label="Back to top"><svg><title>Back to top</title><use xlink:href="https://mridoni.github.io/assets/svg/svg-map.svg#toparrow"/></svg></button></footer></div><script>window.publiiThemeMenuConfig = {
mobileMenuMode: 'sidebar',
animationSpeed: 300,
submenuWidth: 'auto',
doubleClickTime: 500,
mobileMenuExpandableSubmenus: true,
relatedContainerForOverlayMenuSelector: '.top',
};</script><script defer="defer" src="https://mridoni.github.io/assets/js/scripts.min.js?v=48e9576b9741cf2a93ab25c5689c9f5d"></script><script>var images = document.querySelectorAll('img[loading]');
for (var i = 0; i < images.length; i++) {
if (images[i].complete) {
images[i].classList.add('is-loaded');
} else {
images[i].addEventListener('load', function () {
this.classList.add('is-loaded');
}, false);
}
}</script></body></html>