macです。 hamayan <hamayan@xxxxxxxxxxxxxxxx> wrote: > そもそも、コンパイラメーカーからバージョンアップの時に > 何が変更されているのか、聞かないのですか? 「はい、旧バージョンのバグを修正し、多くの新機能が追加され、 今までより、30%も処理速度が速くなりました。」 な〜んて答えが返って来るのがおちでしょう (^^) > 所で、バスにWAITを挿入する時、15位まで挿入できたとしたら、 > WAIT1からWAIT15までdefineマクロを用意するのでしょうか? そうですね、例えば、 #define WAIT3 0x80 #define WAIT2 0x40 #define WAIT1 0x20 #define WAIT0 0x10 #define WAITMASK (WAIT3|WAIT2|WAIT1|WAIT0) #define WAITSHIFT 4 #define WAIT(x) ((x << WAITSHIFT) & WAITMASK) と定義し、 WCR = (WCR & ~WAITMASK) | WAIT(7); などと書けばよいのではないでしょうか? > 上の例で、キャラクタ長だけ変更したい時も、全部書かなけりゃいけない > のですか? > SMR0 = (ASYNC | CHRLEN7 | NONEPRTY | STOPLEN1 | !MP | CLKDIV1); SMR0 = (SMR0 & ~CHR) | CHRLEN7; と書いたっていいけど、 SMR0 = (ASYNC | CHRLEN7 | NONEPRTY | STOPLEN1 | !MP | CLKDIV1); と書いたほうが、間違えないし読みやすいでしょ? まあ、いちいち問題を出す前に、 bit fieldでないとかけない記述が、 あるかどうか考えてみてはどうでしょう? # あるわけないよねえ。 # bit fieldをサポートしていないコンパイラーだってあるし。 あるいは、bit fieldで書いたほうが、 それを使わなかった場合より、 どれほど良いか具体例を書いてみるとか。 -- mac