2010-06-10から1日間の記事一覧

マシンレジスタ割り当て

現在のマシンレジスタの割り当て状況のメモ。 %eax 汎用レジスタ %ebx 汎用レジスタ %ecx プログラムカウンタ %edx ゼロレジスタ(常に0が入っている) %esi スタックポインタ %edi ベースポインタ %ebxと%esi,%ediの値は保存しなければならない為関数の先頭…

組み込み型・命令(暫定)

コンパイラ・インタプリタ作成に特化した型・命令(consセルやビット配列)を用意して個性を出す方針。1バイトで足りるだろうか。組み込み型 ブール型 整数 (8bit・16bit・32bit・64bit) 浮動小数点数 (単精度・倍精度) 以上非ボックス化型 シンボル consセル …

関数が定義できるようになった。

rowlVM上で関数定義が出来るようになりました。 以下はfibonacciの定義。バイトコード長は22バイトです。今は手書きだけど、後でコンパイラ作ります。 (byte[] 100 fib @(assemble `( arg0 imm_i3 isub (if_lt hoge) arg0 imm_i1 isub (vcall 0 4) ; 0番(fib…