Прошло некоторое время с тех пор, как я запрограммировал C и выполнил любую маскировку.C Регистры маскировки бит
Моя проблема заключается в том, что во время запуска устройства мой драйвер устройства инициализирует биты в регистрах, но только некоторые из них могут быть изменчивыми. Я знаю, какие биты изменяемы, и я знаю, что они, по-видимому, зависят от местоположения памяти.
Например: $ 0x00AA всегда должен иметь формат 0b101XXX01, где X являются изменяемыми, а все остальное должно оставаться постоянным. В настоящее время функция принимает адрес и значение и просто устанавливает это значение для этого адреса. Мне нужно изменить его, так что, даже если функция передана в 0b11111111 для регистра $ 0x00AA, она должна быть установлена в 0b10111101. Аналогично, для 0b00000000 - 0b10100001.
Вы могут использовать побитовые операторы ('|', '&', '~') для этого, особенно для версий оператор-оператор ('| =', '& ='). – Medinoc
Вы имеете в виду, что хотите побитовое И? – ace
Вам необходимо определить, что переданный адрес является одним из ваших охраняемых адресов, и в этом случае перед его установкой применить маску к значению. Сколько у вас охраняемых адресов, и они используются в другом месте? – Quentin