bset,bclrは8ビットアドレッシング専用ですが、I/Oポートは8ビット幅アクセスが多いので、 1ビットのセット・クリアだけはこれらの命令を出力してくれてもいいかなぁと思ったわけです。 そうするとロードとストアが一命令でできるので、高速化できるなぁと思っています。 H8ってメモリ(グローバル変数)に対してインクリメントできないんですよね。だから、 1.メモリからレジスタにロード 2.レジスタをインクリメント 3.レジスタ値をメモリにストア と3ステップが必要になります。それはそれで仕方ありませんが、この3ステップ中に割り込みが 発生し、その変数を参照・更新したりすると、結果がおかしくなってしまいます。 そのため、uClinuxのソースでは 1.ccrをpush 2.割込み禁止する 3.上記インクリメント処理 4.popしてccrにセット というコードをみることができました。include/asm-h8300/atomic.h ニーモニックにADD,INC,ADDS,ADDXとバリエーションがあるのに、どれもディスティネーションは レジスタのみというのはさみしいです。ついこの間64ビット変数の加算をしようとADDXを使おう としたら、バイトしか受けつけないし...ADDXはBCD演算専用? -- 落合 正弘 Masahiro OCHIAI http://strawberry-linux.com/