07/10/26 12:00:55
>>364 volatile修飾子は、組み込み用プログラムでは多用するな。
最適化では、値を読むことしかしてない変数は無駄なコードとして
削除されてしまう。
しかし、メモリマップドI/Oでは、I/Oのレジスタ類は変数として
定義され、その内容の変化のみをチェックする処理は多い。 その様な
変数には、volatile修飾子をつけないと最適化で消されてしまって
処理が実行されない。 Cソース上では存在するが、機械語コードでは
存在しなくなっている。 これを防止するのが主な使い方だな。