> > > > Why should it be so? I guess the platform dependent code > emission code > > is err ... not platform independent anyway. Also, if the reference > > platform is for instance LLVM, or some other, off the > shelf, low-level > > intermediate representation, then there is no more platform > dependence > > to take care of at the JVM level (I suppose)... > > Andy is right: "writing in Java" *above* the JVM interface > means you are creating bytecode and all the portability > efforts were taken care for you by the JVM makers. "writing > in Java" *below* the JVM interface means that you have to do, > at some point, some native code transformations yourselfs, > for every single different CPU architecture. >
This is true, but doesn't actually seem too hard. I'm looking at the "arch" section of the Jikes RVM (http://cvs.sourceforge.net/viewcvs.py/jikesrvm/rvm/src/vm/) and the two architectures there (intel & PowerPC) certianly give a good starting point for other architectures. There appears to be an (unfinished) ARM backend available for it, too (http://www.cs.man.ac.uk/~jsinger/armrvm.html) > Writing a JVM in a compilable higher language means that the > compiler will do all that for you. > No it doesn't (unless I'm missing something). It's true you will be able to compile your VM on other architectures, but you still need to write the code generator for those architectures yourself (ie, the bit that converts bytecode into native instructions). In a C-based JVM you'd need to write that in C whereas in Jikes RVM it is in Java. JCVM has a nice feature in this area in that it converts bytecode to C and then lets GCC compile that. That would appear to make it very portable, but it isn't the way most VMs work. (Ironicaly, the C genetation code in JC VM is written in Java - see http://cvs.sourceforge.net/viewcvs.py/jcvm/jcvm/java/org/dellroad/jc/cge n/) Nick IMPORTANT: This e-mail, including any attachments, may contain private or confidential information. If you think you may not be the intended recipient, or if you have received this e-mail in error, please contact the sender immediately and delete all copies of this e-mail. If you are not the intended recipient, you must not reproduce any part of this e-mail or disclose its contents to any other party. This email represents the views of the individual sender, which do not necessarily reflect those of education.au limited except where the sender expressly states otherwise. It is your responsibility to scan this email and any files transmitted with it for viruses or any other defects. education.au limited will not be liable for any loss, damage or consequence caused directly or indirectly by this email.
