やっぱり、独自路線を行くことに

今、必要なのは、関数型言語で書いた、とっても簡単なネイティブコンパイラ入門なのです。
なので、特にレジスタ割り付けは必要なくて、メモリに割り付けてしまうのがいいんです。
でもって、プログラムはリストになっていて、そのリストをコンパイルするだけの奴。
tiny-cに近いんだけど、それをアセンブラ付近から、層を重ねるように作っていって、最後にフロントエンドをつける。
っていうのがいいんだ!うぉるらぁぁぁ。
ってっことで、週末は、また、1から作り直し。
if文が使えるだけのコンパイラをパーサまで含めて作りました。
でもって、順番に作っていって、できたら、部品として使えるっていうのがいいだろうということで、
複数のクラスに、mainメソッド書いてそこで簡単なテストしつつ、結合して育てていくという方法で作ってみました。
で、手元にソースはないので、後でまた書いてみます。


今は、関数をコンパイルする部分を作ってみてます。
x86_64だと、引数をレジスタを6個くらい使った後、スタックに積んで渡すようです。
っという、非常にらくな仕様なのが分かった。
でもって、とりあえず、引数リストを渡すとレジスタに転送するっていうプログラムを吐き出すだけのプログラムを作ってみたところで止まってます。