ルネサス、SHコンパイラの効率の良いプログラミングのオンラインドキュメント [RX&SH&H8]
SHユーザーの方、ルネサスがまとめたSHコンパイラの使い方ドキュメントです。是非ご一読を。
http://documentation.renesas.com/jpn/products/tool/apn/rjj06j0017_shc_prog1_an.pdf
例えば上のドキュメントの一番最初の、1から50までの総和を求める問題を参照してみます。
改善前
int f(void) { char a; int c = 0; for( ; a > 0; a-- ) c += a; return c; }
改善後
int f(void) { long a; int c = 0; for( ; a > 0; a-- ) c += a; return c; }
ですが、SH2で比較した場合、コードサイズで18→16、実行サイクル数で353→303となっています。
ループ処理なので、ちょっとした改善でも大きく影響が出ますね。
また局所変数なので、charをlongにすれば、それだけスタックを消費する様なイメージが有りますが、これ位の変数の使用量なら、コンパイラはスタックではなくレジスタに変数を割り付けてしまいますので、スタックサイズにも変化は無い!とよい事尽くめですね。
面白いのはコードサイズでSH2は18→16byteでしたが、SH2Aは16→14byteです。一体何処を削ったのやら。
※コンパイラの使い方(最適なコードの書き方)まで色々情報を提供してくれるのが、ルネサスの良いところですね。セミナー担当の方、ご苦労様です。
2007-06-22 06:30
nice!(0)
コメント(0)
トラックバック(0)
コメント 0