>>532
reg.bits = 1;
こんなコードが read-modify-write になるのはビットフィールドを使ったときだけ。

自分でビット演算するなら読み書きのタイミングや回数はコード上の見た目とそろう。

メモリマップトレジスタのアクセス幅はレジスタごとの仕様により変わるだろう。
個人的な経験の範囲では、バイト単位でアクセスするレジスタには覚えが無いな。
だいたいは CPU レジスタや主なデータバスの幅と合わせてあったと思う。