海老原と申します。 ずいぶん前からml購読していました。以後よろしくお願いいたします。 >どもども、神戸の澤です。 >もちろん、これが正解です。しかし、volatileを付けないとあんなコードにな >ってしまうのって正しいんでしょうかねぇ。うーーむ...... めっちゃ正しいです。コンパイラ君の正解です。:-) gccのバグじゃないです。 だって数学的に考えて、 for (; x != 0; ) ; は一度評価が真であったら未来永劫、真であり続けますもん。 ここだけみて、『他所でxが書き換えられているかも知れない』という 前提はコンパイラは考えないので 人間がvolatile(揮発性...データは毎回評価しなければならない) をつけてあげる必要がありますです。 H8みたいにメモリマップドI/Oの、メモリリードのポーリングなんかも 同じ問題がおきます。