[H8-ML(4252)] Re: これはどちらのバグというベキか?
From: Yutaro Ebihara <ebiharaml@xxxxxxxxxxxx>
Date: 2003年12月21日(日)17時23分31秒
海老原と申します。
ずいぶん前からml購読していました。以後よろしくお願いいたします。

>どもども、神戸の澤です。


>もちろん、これが正解です。しかし、volatileを付けないとあんなコードにな
>ってしまうのって正しいんでしょうかねぇ。うーーむ......

めっちゃ正しいです。コンパイラ君の正解です。:-)
gccのバグじゃないです。

だって数学的に考えて、

  for (; x != 0; )
         ;

は一度評価が真であったら未来永劫、真であり続けますもん。

ここだけみて、『他所でxが書き換えられているかも知れない』という
前提はコンパイラは考えないので
人間がvolatile(揮発性...データは毎回評価しなければならない)
をつけてあげる必要がありますです。

H8みたいにメモリマップドI/Oの、メモリリードのポーリングなんかも
同じ問題がおきます。

スレッド概略
[4247(R)](起点)
 └[表示中]


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]