LLVM Java バックエンド

LLVMJavaバックエンドを書いてみる。
C Backend方式だとポインタ演算や関数ポインタやunionが面倒そうだし、JavaScriptバックエンドのjsllc既にやってる人がいてつまんないので、仮想CPU扱いしてAsmPrinterでJava吐くように。

MIPSをベースにTabelGenがりがり書き換えてトリビアルなコードは動くように。
リンカ相当のことをやってないので関数ポインタやグローバル変数込みのコードが出てくると死ぬ。
でもこれMIPSエミュレータ作ってるのかバックエンド書いてるのか分からないなぁ。

ついでに開発環境をCygwinからLinux+Sambaに移行。一部だけ変更してmakeしたときの速度が20倍ぐらい違うとか…。Cygwinは便利だけど一定以上の規模のプロジェクトのビルドは向いてないわ。