これは、モジュールのレジスタを作成するハードウェアで特に役立ちます。
現在、Register
さまざまbit-fields
なサイズのbits
. Register
したがって、とを表す構造を作成しますbit-fields
。基本的にハードウェアのレジスタは、モジュールに関する情報を格納する構造です。
たとえば、USB モジュールの場合、USB ハードウェア内のレジスタは、USB デバイスのステータスやその他多くの情報を保存します。
メモリの占有量が非常に少ないため、 のために予約するのではなく、struct
内のデータ メンバーの長さを制限します。bits
uints(or any other primitive data types)
bit-fields
また、ダミー宣言 unsigned int : 6;
を使用して構造体をパディングし、構造体オブジェクトとアクセスがword aligned
マシン アーキテクチャに従っているようにします。したがって、アクセスがプロセッサのワード境界に整列されている場合、レジスタ オブジェクトへのアクセスはより多くの時間を消費しません。基本的に、ワード、ハーフワード、またはバイトが、プロセッサのワードサイズの倍数であるアドレスに配置されている場合、一度に非常に効率的にアクセスできます。
たとえば、あなたのケースでRegister
は、16-bits
マスク、特権、および ov の 3 つのビットフィールドがあります。残り6-bits
は将来の使用のために予約されています。これがどのようRegister
に見えるかです、
bit-position 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
---------------------------------------
|ov | reserved | privilege |mask|
---------------------------------------
したがって、サイズが 16 ビットの構造体を作成することにより、この構造体のオブジェクトは、8、16、32 ....ビット ALU を備えたプロセッサで簡単にアクセスできます。