реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> volatile всё-таки нужен или нет?, всё работает, но страшно
xemul
сообщение Mar 11 2013, 11:26
Сообщение #16



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Цитата(sigmaN @ Mar 11 2013, 14:58) *
Хотелось-бы пруфлинк, если можно. Сколько копал на тему volatile - нигде не видел подобного разделения на то где требуется, а где не требуется volatile.

ISO9899 Programming Languages C
Цитата
5.1.2.3 Program execution
...
8
EXAMPLE 1
An implementation might define a one-to-one correspondence between abstract and actual
semantics: at every sequence point, the values of the actual objects would agree with those specified by the
abstract semantics. The keyword volatile would then be redundant
.
...

Можно также посмотреть п.п. 4, 5, 9.
Go to the top of the page
 
+Quote Post
sigmaN
сообщение Mar 11 2013, 18:46
Сообщение #17


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



ой не знаю не знаю...
An implementation might define... а мэй нот дэфайн...
что делать, придется мне почитать стандарт.

ну вот, а чуть ниже
Цитата
Alternatively, an implementation might perform various optimizations within each translation unit, such
that the actual semantics would agree with the abstract semantics only when making function calls across
translation unit boundaries. In such an implementation, at the time of each function entry and function
return where the calling function and the called function are in different translation units, the values of all
externally linked objects and of all objects accessible via pointers therein would agree with the abstract
semantics. Furthermore, at the time of each such function entry the values of the parameters of the called
function and of all objects accessible via pointers therein would agree with the abstract semantics. In this
type of implementation, objects referred to by interrupt service routines activated by the signal function
would require explicit specification of volatile storage, as well as other implementation-defined
restrictions.


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
xemul
сообщение Mar 12 2013, 11:35
Сообщение #18



*****

Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731



Цитата(sigmaN @ Mar 11 2013, 22:46) *
а мэй нот дэфайн...

Если сомневаетесь, загляните в ассемблерный листинг. У меня почему-то есть уверенность, что там ничего лишнего не соптимизировалось. Да и сами говорите "тут вдруг всё работает даже с -O3".

Процитированный Вами п.9 о том, что усилия одного оптимизатора могут привести к странноватым результатам, о чём писал Сергей Борщ, а усилия другого - не привести, и что знакомство с "implementation-defined restrictions" приветствуется.
В этом смысле volatile на всё, поминаемое в прерываниях - платформо- и компиляторо-независимая панацея.
Но мне проще подстелить соломки какого-либо вида.
Go to the top of the page
 
+Quote Post
Andron77
сообщение May 1 2013, 08:24
Сообщение #19


Участник
*

Группа: Участник
Сообщений: 28
Регистрация: 9-12-11
Из: Новосибирск
Пользователь №: 68 762



Нашел понятное обьяснение про volatile переменные с примерами.
Прикрепленный файл  volatile_for_chainiks.pdf ( 176.63 килобайт ) Кол-во скачиваний: 257
Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 7th July 2025 - 07:15
Рейтинг@Mail.ru


Страница сгенерированна за 0.01386 секунд с 7
ELECTRONIX ©2004-2016