xemul 0 11 марта, 2013 Опубликовано 11 марта, 2013 · Жалоба Хотелось-бы пруфлинк, если можно. Сколько копал на тему 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
sigmaN 0 11 марта, 2013 Опубликовано 11 марта, 2013 · Жалоба ой не знаю не знаю... 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. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
xemul 0 12 марта, 2013 Опубликовано 12 марта, 2013 · Жалоба а мэй нот дэфайн... Если сомневаетесь, загляните в ассемблерный листинг. У меня почему-то есть уверенность, что там ничего лишнего не соптимизировалось. Да и сами говорите "тут вдруг всё работает даже с -O3". Процитированный Вами п.9 о том, что усилия одного оптимизатора могут привести к странноватым результатам, о чём писал Сергей Борщ, а усилия другого - не привести, и что знакомство с "implementation-defined restrictions" приветствуется. В этом смысле volatile на всё, поминаемое в прерываниях - платформо- и компиляторо-независимая панацея. Но мне проще подстелить соломки какого-либо вида. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Andron77 0 1 мая, 2013 Опубликовано 1 мая, 2013 · Жалоба Нашел понятное обьяснение про volatile переменные с примерами. volatile_for_chainiks.pdf Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться