ひやしたです。 >> register unsigned a= (count&(divNum-1));/*=count%divNum 高速化*/ >> DA.DR0=*(adrR+a);/*右足,=adrR[count%divNum];*/ >> DA.DR1=*(adrL+a);/*左足*/ >> count++; >かなり最適化されてると思います、1バイトx2個のデータなら >ワードデータにし1回のアドレス演算で済む様にしては、それにし >てもこれだけの処理なのに重すきる様な、やはりhamayanさんが >言われてる様に逆アセンブルして原因を追求してみるしか無いと >思います。 >adrRやadrLの定義のしかたにより型変換などでムダな事やってそう >な気もしますが。 同感。これ以上の「劇的な最適化は」は出来ないように見えますね。 で、ワタシ、最近こればっかりなのですが、どこで時間が掛かっているのか オシロとIOポート作戦で調べるとか。(^^; 具体的な事がわからないので全くハズしているかもしれませんが、 システム全体のアルゴリズムを再考してDMAのIOモードを使うとか、 そういうソリューションは検討してみるのも手かもしれませんね。 最もシンプルなコードで現象を再現して頂ければ イエローソフトのコンパイラ(で良ければ)で コンパイルしたアセンブラリストを提示できますけど。