SSブログ

ルネサス、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です。一体何処を削ったのやら。

※コンパイラの使い方(最適なコードの書き方)まで色々情報を提供してくれるのが、ルネサスの良いところですね。セミナー担当の方、ご苦労様です。


nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。