2. по остальному, особенно про DS и компиляторы - теперь уже я не понял.
есть реалтаймовая операция - чтение или запись бита. Остальное не требует жесткача и может выполняться как угодно. и оптимизаций от вольного с 2007 года не наблюдается. я про gcc.
ну, про DS - это надо понять, действительно

Купи платку на красненьком текстолите - термометр. На DS18B20. На базаре у нас такие продаются.
Поставь её на тепловой насос, охладится как до -12 - нагрей её сразу до +50.
Он отвалится и больше не найдётся

Хохма в том, что далласы стоят около 20грн уже 10 лет как.
Как это им удается, если гривна ёбнулась уже раз в 5 за это время?
А они его удешевили - термокомпенсации там больше нет.
В результате - времязадающий конденсатор там ползёт аки змей.
И чтобы корректно с ним работать - надо немного усложнить алгоритм.
Так вот - тут уже важен тайминг. И важен он там нипадецки - иначе не будет даже весь диапазон брать, или вообще presenс pulse не поймёшь (он тоже ползет от температуры почти в 1,5 раза на весь диапазон.
Вот я про этот тайминг.
Есть момент времени. И вот после него - мне надо Х тактов... Не Y, не Z, не А и не И - именно X.
И вот оптимизация от вольного - она в этом случае ни куда не девается. Просто код продолжает же наращиваться и в какой-то момент оптимизация хавает переменную, отвечавшую за время. программа ловит втык, теряет датчик, автор ловит сложное лицо.
Спасаться - volatile.
Отключение прерываний - то само собой, оно тоже начинает влиять, даже если там всего тактов 20 обработчик - вылетишь из тайминга - неправильно прочтешь бит.