volatile変数が、コンパイラの最適化(レジスタ割り当てや命令削除)の対象外となる理由は何か。

値がプログラムの明示的な操作以外で変わる可能性があるためが該当。