Перейти к содержанию
    

Межпроцессорная синхронизация для доступа к переменным

7 минут назад, Darth Vader сказал:

Для любой операции: +, -, *, /, &, |, ^, <<, >> значение из переменной в памяти надо считать в регистр, произвести операцию в регистре и записать результат обратно в переменную в памяти.

Что-то Вы не то говорите (или смысл другой), ибо

volatile u8 i;

void func() {
  u8 j = i >> 1;
  ...
}

i здесь после сдвига не изменит своего значения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 часа назад, Arlleex сказал:

или смысл другой

Наверное. Имелось ввиду такое:

uint8_t i;
++i; 
i = i+5;
i = i<<3;
i |= 1<<3;

Т.е. когда надо изменить значение переменной, вычислив её новое значение из текущего. Любые конструкции, где им переменной стоит слева от знака присваивания, и, одновременно, справа от него участвует в выражении. Т.е. там, где значение переменной участвует в вычислениях, и, одновременно, в эту же переменную сохраняется результат этих вычислений.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...