マイコンなどのIO アドレスを、PC 側のメモリのアドレスに関連付けているのだろう(Memory-mapped I/O)。
これで、PC側のアプリでは、PCのメモリを読み書きするだけで、マイコンの操作ができる

PC側のメモリを読むと、マイコン側のメモリから読み込む。
読み込むと、マイコンの電圧が変わって、値が不定か逆などになる

通常は、pull up, pull down 抵抗などで、5V・0V にしているけど、
閾(しきい)値(Threshold)があって、
例えば、1V以下なら0V、4V以上なら5Vと判定される場合、1〜4Vは、不定になる

まあとにかく、読み込むだけで電圧が変わる・リセットされるから、
読み込むだけでも、電圧の状態が変わる

だから、IOアドレスを読むだけでも意味がある・状態を変えているので、
コンパイラで最適化・省略してほしくない!