ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
29 ноября
853674 Топик полностью
Vit (06.07.2018 16:24, просмотров: 434) ответил sladkoejka на В вашем примере происходит модификация данных помеченных как volatile. Компилятор в этом случае не может быть уверен, что эту модификацию данных никто не увидит и она ни на что не повлияет. Поэтому код удалять не будет.
Как пример, чтение внешней памяти может использоваться для сброса сторожа - замешивается на дешифраторе адрес и строб RD, а с выхода получаем сигнал сброса. Если указатель на volatile, то компилятор не должен оптимизировать обращение. Хотя у Keil для ARM в районе версии 4.23 при dummy-чтении регистра данных UART (прочистка при ошибках приема) наблюдалось выбрасывание именно такого участка кода - это неадекватность, ошибка компиляторостроителей. В более поздних версиях эта ошибка была исправлена.