DynASM
LuaJIT見てたら、なんかDynASMというのを利用しているようで、そのDynASMが非常に素晴らしいような気がした。
サンプルを見れば、わかるか。
http://luajit.luaforge.net/dynasm_examples.html
よーするに、DynASMは、JIT用のアセンブラ、というわけ。
DynASMは、プリプロセッサになってて、
static void jit_op_store_array( Dst_DECL ) { | pop ecx // array | pop ebx // index | mov eax, [esp] // value | mov [ecx + ebx*4], eax }
こんなコードを書いて、DynASMにとおせば、こういう機械語を生成するプログラムが生成できる。
まだちょっと、ラベルまわりの使いかたがわからないんだけど、詳細は気が向いたら書く。
とりあえず、a24zを超試験的にJIT対応しといた。
http://morihyphen.hp.infoseek.co.jp/files/a24z-0.92.tar.gz
field fval: int def start() -> void : fval = 9
こ、このぐらいなら…動く。(それは動いたとは言わない)
あと、http://d.hatena.ne.jp/shinichiro_h/20060317#1142573253 でstruct対応していただいたのも入れておきました。対応どうもありがとうございます。
あー、それと、そういえば、getHeightがアレなのは、ただ単にパス数ケチった結果だったような気がしてきた、ので、getHeightがややこしかったのは忘れてください。