前にも紹介した、純Java製OS、JNode(http://www.jnode.org/)の新しいリリースがあったらしい。
というわけで、ひさしぶりにいろいろと調べたり、遊んだりしてみた。
で、コード見てみると、Cのコードはまったくなく、あるのは膨大なJavaのコードと少数のアセンブラだけ。
こ、これはすごい。
ここで、ちょっと知識のある人なら、「おい、それでどうやってブートするんだよ」と思うことだろうと思う。
というか、自分がそう思った。
で、コードをごにょごにょと調べてみた。
すると、どうやら
か
- アセンブラからJavaで書かれたVMを起動(JNode独自のアセンブラでJavaのバイトコードをアセンブラコードにしてnasmか何かでネィティブに?)、その上でJavaで書かれたOS(Javaバイトコード)が載っかってる
#GCJは使ってないみたいだし
となってるみたい。どちらかは、まだそんなによくコードを読んでないのでわからないけど、どっちかであると思われる。
アセンブラ(アセンブルするプログラムの方ね)らしきものがJavaで書かれてるんだけど、気合入りすぎ。
ちなみに、公開されているイメージをCDに焼いて実際に動かしてみたら、CUIまではちゃんと動いたのだが、GUIはうまく動かなかった。多分、自分のビデオカードかグラフィックボードがJNodeではまだ非対応だったのだろう。
あと、ビルドもやってみた。WindowsXP+Cygwin+Eclipse+nasm+yasm+mkisofsでCDイメージまで作れるっぽい。
#自分はmkisofsが無かったのでイメージを作る手前でビルドが不正終了したけど・・・・
これから、もうちょっとちゃんとコード読んでみる。
#追記1
ネイティブコードを吐き出すコンパイラも自前で持っている様子。
#追記2
IRとかいう中間言語を生成して、Javaバイトコードから最適化されたネイティブコードを生成したりするらし。これだけで、論文になりそうな気ガス。