-
- да так и сделал, только это... не спортивно, ситуация стандартная, загрузка буфера по прерыванию, переменная, индекс буфера, изменяется в прерывании (она соответственно волатильна), регистр ввода вывода волатилен по умолчанию, конечно некоторые IBAH c чужого компа(35 знак., 30.04.2016 22:17, )
- Сделать локальную копию - все равно, что отказаться от волатильности. Свой смысл тогда она потеряет, т.к. сможет измениться в промежутке между копированием и использованием. - Ксения(30.04.2016 22:01)
- Не понял. Мы же копируем из волатильной в локальную/регистровую всякий раз перед ее использованием, и оптимизатор не выкинет действия с нею. Примерно так делает и компилятор, загружая переменную в регистры. Или Вы намекаете на что-то другое? - Олдфаг(30.04.2016 22:13, )
- Я не специалист в АРМ асме, но в обоих вариантах у меня получилось одинаковое количество команд - IBAH c чужого компа(30.04.2016 22:22, )
- Иногда волатильность нужна просто чтобы компилятор переменную не выбросил (если используется оптимизация). + Можно к примеру, запретить прерывание, присвоить значение временной переменной, затем снова прерывания разрешить. - De_User(30.04.2016 22:04)
- Не понял. Мы же копируем из волатильной в локальную/регистровую всякий раз перед ее использованием, и оптимизатор не выкинет действия с нею. Примерно так делает и компилятор, загружая переменную в регистры. Или Вы намекаете на что-то другое? - Олдфаг(30.04.2016 22:13, )