导航

将Jikes RVM在PowerPC上编译的进展

Posted on 2004-06-18 14:32  姜伟华  阅读(1881)  评论(2编辑  收藏  举报

      我有个想法需要compiler和hardware协同来实现。hardware只有用simulator了。因为软件是java,所以软件部分只有用JVM了。
     好像micro-architecture level的simulator比较著名的也就是simplescalar了。就挑他了。
     但JVM好像不好找。Kaffe倒是可以在simplescalar上跑。但因为simplescalar不支持线程。所以kaffe只能相当于一个interpretor,没法用它的JIT功能。郁闷!

     另外还有两种选择:用GCJ+simplescalar或者用UMass新出的Dynamic Simplescalar+Jikes RVM

     GCJ我让梅超在实验。但好像要把GCC 3.2.1编译成SimpleScalar支持的PISA指令的cross compiler也不是一件容易的事情。虽然我已经找到了CMU的人改写的GCC。而版本低的GCC(simplescalar只支持2.7.2)根本就没有GCJ。不过就算GCC能够编译成功,GCJ的library能不能编译成功我也不知道。所以总体来说,我对这个方案的可行性抱怀疑态度。

     我自己在实验用Dynamic Simplescalar+Jikes RVM的方法。这个方法的优点是我们对Jikes RVM比较熟悉,所以修改的工作量比较小。但Dynamic Simplescalar只支持PowerPC指令集。这样就比较将Jikes RVM编译成PowerPC+Linux上的可执行代码。我看了UMass给的example里的Jikes RVM代码。好像其他部分(例如classpath库等)都是可以重用的。所以估计只要编译出JikesRVM和RVM.image这两个文件就可以了。RVM.image应该是RVM自己的compiler编译出来的,所以和GCC应该没什么关系;而JikesRVM实际上它的boot loader,这个是GCC编译出来的。所以如果要在X86上编译出PPC版的RVM的话,就需要cross compiler GCC的支持。

     现在我正在编译GCC,用的是http://www.kegel.com/crosstool/提供的crosstool。但昨天的编译失败了。第一次失败是好像从交大ftp下的glibc 2.3.2有问题,报IFS定义错(sysd-syscalls:182)。重新下载后又换了个错误,变成segmentation fault。不管啦,今天直接从国外网站上下,希望这次编译能够通过。

     如果实在没法cross compile RVM的话,那就只有厚着脸皮去找UMass的Eliot Moss了,请他给我们提供一个PPC上的Linux帐号来编译RVM。

     God bless me !