<3A253E45.4F1B9DF5@xxxxxxxxx> の、 "[H8-ML(870)] Cでの割り込み/gcc" において、 "中井 祐一 <u1lab@xxxxxxxxx>"さんは書きました: u1lab> Cコンパイラの吐くアセンブラソースを覗いてみるとよく解ります. u1lab> interrupt識別子(?)をつけると全レジスタのPUSH,POPを行なうので u1lab> ITUなどの頻繁に割り込みの起こるものに関しては損をします. u1lab> やはりアセンブラは欲しいところですね(^^) コンパイラが必要なレジスタだけ退避してくれれば 良いのですが、ここはDMACを使うのが正しい作法でしょうね。 頻繁な割り込みそのものが駄目な設計なんであって、それが 遅いとか言い出すのは論外です。 u1lab> ex2の場合はROMのほうにデータを置いてくれるので,実行時間なども u1lab> 食わなくなります. u1lab> # Cの仕様を考えれば当然といえば当然カモ? 記憶指定子をきちんと書くのは常識というか教養です。 何のためにあるか考えたことあります? staticかどうかconstかどうか考えずに変数宣言しているのでしたらそもそも コンパイラを云々する資格はありません。 u1lab> u1lab> やはり時間的にクリティカルなものはアセンブラで書くべきですね. u1lab> Cで書くときはクリティカルセクションを作らない。が正しいでしょう。 そのためにH8には豊富なハードウェアがあるのですから。 私がH8を好きなのは豊富なハードウェアのお陰でクリティカルセクション を作らなくて済むのでVC++とかでシュミレートしておいたコードがそのまま 使えることです。仕事ならICEがあるので気にしませんがH8は趣味なのでこれ は大きいです。 まぁ、PICやZ80と言ったそれが出来ないCPU用での作法が広まってしまって いるので仕方ないところもあるのですがそれではH8を使う意味が無い。 とまぁ、偉そうな事言ってもSPARCで最後アセンブラになってしまったこと もありますが。ディレイドスロットとか人間向きでは無い機構があるし、最適 化も強力なのでコンパイラより早いコードを書くのは大変でした。^-^; なにしろ無料でgccが手に入るので商用のコンパイラは強力なんです。 3割、4割早いコードが出るのは当たり前。 趣味で一万行程度のものを書くならいいですがすぐにアセンブラに頼る癖は 直しておいた方が良いですよ。 ところで、なんでもかんでもコメントにするのは止めませんか。コメントに コメントするのはマナー違反なんですが最近守られてないなのはろくに考えず なんでもかんでもコメントにする人が増えたせいですよね。 プリプロセッサにかけてコメントを抜いた状態でも読めないんだったらそれ はエラーメールです。^-^; /IMAIZUMI