-
- Все таки не понятно почему не будет оптимизировано. Никаких действий не предусмотрено, объявить честный volatile по фиксированному адресу не всегда возможно, да и хидеры приходится брать какие дают а не какие надо. - ASDFS(11.07.2018 17:25)
- Выражение "object" имеет значение (содержимое объекта), и это значение должно быть вычислено (для того и volatile, чтобы и при оптимизации тоже), даже если оно не используется. Вот и получается чтение содержимого объекта из памяти SciFi(185 знак., 11.07.2018 17:32 - 17:39)
- :) в другой теме этого форума утверждаются другое что если результат volatile не используется, компилятор имеет право убрать. - VLLV(11.07.2018 18:18)
- Не путайте локальные с глобальными! Обращения к глобальному волатильному не будут оптимизированы. И другого никто не утверждал. Nikolay_Po(107 знак., 11.07.2018 23:51)
- Как йурист йуристу: а где это написано? - SciFi(12.07.2018 00:45)
- Это вопрос трактовки написанного. Если компилятор сам, своими "руками" выделил память для локальной переменной, по произвольному адресу, то по завершению этого контекста он имеет полное моральное право эту ячейку "убить". Nikolay_Po(1768 знак., 12.07.2018 10:36)
- Почему "volatile как запрет оптимизации" - это упущение стандарта? Скорее, упущением следует назвать недостаток средств для работы с регистрами и потоками. Из этих средств только volatile и есть, практически. Вот на него шишки и сыпятся. - SciFi(12.07.2018 10:46)
- Я согласен, что если переменную объявили volatile, то оптимизировать, по стандарту нельзя. Говоря про упущение стандарта, я имел ввиду отсутствие оговорки, что не оптимизируется лишь переменная, для которой был выделен адрес вне рамок текущего Nikolay_Po(244 знак., 12.07.2018 10:58)
- А что вообще можно придумать для работы с регистрами в условиях множества архитектур? - VLLV(12.07.2018 10:49)
- Почему "volatile как запрет оптимизации" - это упущение стандарта? Скорее, упущением следует назвать недостаток средств для работы с регистрами и потоками. Из этих средств только volatile и есть, практически. Вот на него шишки и сыпятся. - SciFi(12.07.2018 10:46)
- Это вопрос трактовки написанного. Если компилятор сам, своими "руками" выделил память для локальной переменной, по произвольному адресу, то по завершению этого контекста он имеет полное моральное право эту ячейку "убить". Nikolay_Po(1768 знак., 12.07.2018 10:36)
- Как йурист йуристу: а где это написано? - SciFi(12.07.2018 00:45)
- ересь. линукс (драйверы) сразу перестанет работать: например сброс аппаратного фифо делают чтением с выкидыванием результата. - 3m(11.07.2018 21:17)
- Ссылку в студию. Волатильный срач лучше хохлосрача. - SciFi(11.07.2018 18:44)
- с мобилы после пива не смогу. в микропроцессорах в сладкоежкиной теме - VLLV(11.07.2018 18:52)
- Там ветка разрослась огого. Сладкоежка наговорил на срок. В смысле ереси всякой :-) - SciFi(11.07.2018 21:53)
- с мобилы после пива не смогу. в микропроцессорах в сладкоежкиной теме - VLLV(11.07.2018 18:52)
- Не путайте локальные с глобальными! Обращения к глобальному волатильному не будут оптимизированы. И другого никто не утверждал. Nikolay_Po(107 знак., 11.07.2018 23:51)
- :) в другой теме этого форума утверждаются другое что если результат volatile не используется, компилятор имеет право убрать. - VLLV(11.07.2018 18:18)
- Выражение "object" имеет значение (содержимое объекта), и это значение должно быть вычислено (для того и volatile, чтобы и при оптимизации тоже), даже если оно не используется. Вот и получается чтение содержимого объекта из памяти SciFi(185 знак., 11.07.2018 17:32 - 17:39)
- Кстати, "*(int volatile*)0x1234" едва ли можно назвать переменной. То есть волатильного объекта здесь просто нет (во всяком случае, он не создавался в программе). И на этот счёт стандарт C99 тупо молчит. С йуридической точки зрения SciFi(150 знак., 11.07.2018 16:55)
- По видимому юридически правильно завести глобальный volatile и присваивать ему значение сабжевого регистра. Оверхед, конечно, присутствует. - ASDFS(11.07.2018 17:09)
- Вру, кажись, нашёл нужную статью УК: SciFi(314 знак., 11.07.2018 17:29)
- По видимому юридически правильно завести глобальный volatile и присваивать ему значение сабжевого регистра. Оверхед, конечно, присутствует. - ASDFS(11.07.2018 17:09)
- Все таки не понятно почему не будет оптимизировано. Никаких действий не предусмотрено, объявить честный volatile по фиксированному адресу не всегда возможно, да и хидеры приходится брать какие дают а не какие надо. - ASDFS(11.07.2018 17:25)