Это особенно полезно в оборудовании, где вы хотите создать регистр модуля.
Теперь в 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
и имеет 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 .... битными АЛУ.
person
Uchia Itachi
schedule
15.08.2013