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がややこしかったのは忘れてください。