LLVM

HSP JIT

何年か前に放置してたHSPのJITを再開。実行時情報による最適化無し(--no-opt)はhsp3cnv+コンパイル相当の内容で、バイトコードのデコードとディスパッチ、オペランドスタックの操作などを最適化出来て数割の高速化。プログラム実行中に変数型が変わらないと…

HSPをJIT実行

ようやくraytraceが1.7倍速くらいで動くようになった。http://peppermint.jp/products/hsp/ http://github.com/zakki/openhsp/tree/jit まんまhsp3cnvと同じだとインタプリタ実行と等速か若干遅いくらいなので、次のあたりを実装した。 実行時にトレースしつ…

第2回LLVM勉強会

行って来ました。目玉はid:miura1729さんのyarv2llvmの話とか。 第1回と微妙に人の層が違った気がする。

LLVM Java バックエンド

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

LLVM勉強会

LLVM勉強会にいってきた。 結構人多くて30〜40人くらい。懇親会での話を聞くかぎりLLVMの日本語情報ねーよってことっぽい。 初回ということもあってかとりあえず概要やexamples下のFibonacciやHowToUseJITの解説のような内容。 phiインストラクションあるの…

OpenHSP with LLVM

val = 0 *main : if val >= 100000000 : goto *a val += 1 if val \ 100000 == 0 : mes val goto *main *a : mes val ぐらいなら動くようになった。型は整数、制御構文はifとgotoのみって段階で比べてもしょうもないけどオフィシャルのHSPの50倍速ぐらいで。…

LLVM

LLVM使ってHSPをJITコンパイルできるように実験中。Javaの実装見てみたけどASTの実装だったり動的型だったり型推論だったりのサポートは 特にないようだ。COINSとかSCKとは扱ってるレイヤーが違うんだな。