From the Department of Insane Ideas: D on the JVM

Gregor Richards Richards at codu.org
Wed Dec 13 06:16:32 PST 2006


Anders F Björklund wrote:
> Gregor Richards wrote:
> 
>> Using NestedVM, a tool that lets you compile anything GCC supports to 
>> Java bytecode, I've made a modified copy of GDC that can produce 
>> native Java .class files from D source.
>>
>> What's the use? I don't know, I only did it to have a bit of perverse 
>> fun.
>> Sockets and threads don't work yet, and it's not extensively tested,
>> but it works enough to get a simple Hello, World! compiled.
> 
> Excellent hack! Will give it a try on Mac OS X, might even be useful. :)
> 
> "NestedVM provides binary translation for Java Bytecode. This is done by 
> having GCC compile to a MIPS binary which is then translated to a Java 
> class file."
> 
> "Entire virtual memory space mapped to a giant int[][] array indexed by 
> page, then address. Breaking memory up by pages allows memory to be 
> dynamically allocated."
> 
> "Applications interact with the Operating System via the SYSCALL 
> instruction. ... The syscall instruction is simply mapped to
> the syscall() method of the Runtime class."
> 
> So it seems the only thing GDC needs is a "nestedvm" OS and "MIPS" CPU ?
> 
> --anders
> 
> PS. Quotes from http://www.zentus.com/nestedvm/ and their NestedVM.pdf

First off, for the skeptical: While all those quotes are true, it isn't 
as bad as it seems. It compiles the actual code to Java bytecodes, so 
it's not a virtual /execution/ environment, just virtual memory and a 
virtual syscall handler.

OK, now on to what you actually asked:

I'll be documenting how to get it all compiled soon. It's unfortunately 
a bit of a pain in the arse. Basically, you need to compile NestedVM 
(with GCC <4), then compile a newer GCC with GDC and my patch, with the 
same configure flags as those used for NestedVM.

G'luck if you want to try it before I put up a doc :)

  - Gregor Richards


More information about the D.gnu mailing list