gg02のためにcleを研究してみる
2013.03.02
- http://nerry.hatenablog.com/entry/2013/03/02/000908 を読んで考察。
- 汎用レジスタが6本だけかと思ったら、ローカル変数があるらしい。ローカル変数は少なくとも16本あるらしい。なるほど!
- しかもレジスタには優劣があり、ローカル変数にも優劣がある。この辺のセンスはよくわかる。
- gg02では、ローカル変数に相当するものはない。まあレジスタが64本といっぱいあるしね。これで足りないときは普通にメモリを使ってもらう。メモリは直接演算はできないから、その点では不利。
- 優劣の話だけど、gg02でも優劣はあって、レジスタ番号が0~6だと短い形式が使える。
- gg02の場合、レジスタ番号の若いものは物理レジスタに割り当てられる。僕の場合、neriさんとは違って将来的にもこの割り当て方針について拡張の予定はない(neriさんは使用状況を見て決める機能も検討しているらしい。すごい!かっこいい!)。これはコード変換器をできるだけシンプルに保つためで、僕の趣味といえる。
- でもgg02のコードを最適化してgg02として出力するプログラムなら書くかもしれない。つまりできるだけ若いレジスタ番号を使わせるわけだ。