LLVM2.7 Hackathon
LLVM2.7 Hackathon http://atnd.org/events/4295 参加してきました。
前々から実装したいと考えていたKonohaのコンパイラを実装してみました。
いろいろ考えたけど、処理系に組み込む形ではなく、パッケージの形で
提供してみました。
#!/usr/local/bin/konoha using llvm.*; int fib(int n) { if(n<3) return 1; return fib(n-1)+fib(n-2); } print fib(36);
$ time -p konoha -g test/fib.k [fib.k:9] 14930352 real 0.53 user 0.52 sys 0.01
llvmを使用しない場合は以下のような結果になります。
real 2.20 user 2.18 sys 0.00
GetElementPointerのAPIを使うと配列、構造体の要素に
アクセスすることができるので、これをうまく使うことで
計算することができます。
今回はIntの計算と関数呼び出しのみに対応しました。
そのうち、Floatの計算、オブジェクトの操作に対応して
いきたいと考えています。