这在您要创建模块寄存器的硬件中特别有用。
现在,里面Register有很多bit-fields可以在bits. 因此,您创建一个结构来表示Register和bit-fields。基本上,硬件中的寄存器是存储模块信息的结构。
例如,对于 USB 模块,USB 硬件内部的寄存器存储有关 USB 设备状态和许多其他内容的信息。
通过限制 to 内部数据成员的长度而不是为structtobits保留uints(or any other primitive data types),bit-fields因为它占用的内存非常少。
此外,虚拟声明 unsigned int : 6;用于填充结构,以便结构对象和访问word aligned符合机器体系结构。因此,如果访问与处理器的字边界对齐,则对寄存器对象的访问不会消耗更多时间。基本上,如果字、半字或字节在地址处对齐,该地址是处理器字长的倍数,那么它可以非常有效地一次访问。
例如,在您的情况下Register,16-bits它具有 3 个位域:掩码、特权和 ov。而其余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 的处理器上轻松访问