ふと

なんとなくわかったょ。8時くらいに寝て、2時くらいに起きると、色々やる気が出るようだ。必要なのは、不規則な生活だったようだ。


それはいいとして、
http://morihyphen.hp.infoseek.co.jp/files/a24z-0.5.tar.gz
適当に修正、追加。


なんか並べてみると、色々修正したような感じだけど、実際、どれもこれもちょっとずつなのでそれほどでもない。


ちょい前のRISC欲しい発作の時に、ARMについて調べてたら、ARMはFPUが無いのが普通っぽいらしいのを見て、おもむろに固定小数点対応。固定小数点演算が自然に書けるようになるので、悪くないと思う。
a24z_config.hに、

#define A24Z_USE_FIXFLOAT
#define A24Z_FIXFLOAT_SHIFT 10

とかやっといて、コンパイルしなおすと、それ用のVMになる。んで、コンパイル時に-s 10とかしておけばコンパイラがそれ用のコードを吐く。


Direct Threaded Codeは速くなるらしい。a24z_config.hに#define USE_THREADED_CODEを追加すればできる。


Cからの関数呼び出しはちょい面倒だけど、

entry hoge

def start() -> void :
	yield

def hoge() -> int :
	return 10

こんな感じにしておいて、C側から、

ret = a24z_vm_call_entry( vm, 1 );

こんなふうにすれば呼べる。2番目の引数はentryの番号。entry宣言しておくと、上から順番に番号が付いていって、それが使える。

entry foo
entry bar

def foo() -> void:
	...

def bar() -> void:
	...

こんなふうにしておいて、barが呼びだければ、

enum {
	FUNCID_FOO = 1
	FUNCID_BAR
};

ret = a24z_vm_call_entry( vm, FUNCID_BAR );

こんな感じで。二番目の引数を0にすると、startが呼べる。


と、そういうのはどうでもよくて、a24zに必要なのは、ドキュメントとちゃんとしたエラーメッセージとそれなりのサンプルなんだろうけど、知らねーよ。そんなの。コード書く気も出ないのに、そんな作業やる気が出るわけがない。