昨日作った回転因子テーブルの造りについて考えてて
ふと気づいた。
cosとsinを別々のテーブルに分けて作っちゃったんだ
けど、よく考えたらcosとsinはどうせ同時に読み出す
必要があるし、1段目から6段目まで32個のデータを
順々に読み出していくことは決まっているし、
なにより、AVRのレジスタが直交性が高いとはいえ
アドレッシングに使えるのはx,y,zの3つ。
プログラムメモリにアクセスするレジスタはzの1個だけ。
ってことは、テーブルをあっちこっちアクセスする
ロジックだとオーバーヘッドが大きすぎる…。
回転因子テーブルに触るレジスタはz固定なんだから、
ここはひとつテーブルの構造をAVRのアセンブラに
フル特化させてしまった方が賢い。っつーか最初から
そうしておかないのがオイラの毛が3本足りない
証拠だな。
って言うことで、99basicのプログラムは修正要だな。
|