tokuhirom's Blog

Hello, world レベルの JVM を作った

Java エンジニアなら JVM を実装してみたほうがいいなぁ、ということで簡単に。

の2ステップで進めていけば OK.

class file の読み込み

バイナリファイルなので、DataInputStream とか使って読んでいけば OK。

https://qiita.com/mima_ita/items/a42f3f016a411627bd7a#constant_methodref

クラスファイルの中身は

実行フェーズ

普通の VM を実装していけば OK。

stack, program counter とかを持った普通の VM を作る。 Java は普通の VM と違って、stdout に書く命令が VM レベルで実装されていないんで、そのへんもランタイムとしてロードしておく必要がある。

実装

https://github.com/tokuhirom/picojvm

というわけで、Hello, world がなんとなく動くところまで実装したのがこちらです。 だいたいここまでで2人日ぐらい。