Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Точно доктор. Почитайте стандарт. Там все Ваши права разъяснены, как и права компилятора. Компилятор обязан (+)

Отправлено ReAl 01 марта 2008 г. 14:31
В ответ на: volatile - модификатор переменной, которая может изменить значение неким фоновым процессом... Это не есть защита от неаргументированного вмешательства в авторский алгоритм некоего автомата с неизвестным уровнем интеллекта... Если я пишу оператор, то он мне нужен... Авторское право называется... отправлено ETM 01 марта 2008 г. 14:08

Во-первых, подрихтуйте своё понимание квалификатора volatile:
6.7.3 Type qualifiers
6 An object that has volatile-qualified type may be modified in ways unknown to the implementation or have other unknown side effects. Therefore any expression referring to such an object shall be evaluated strictly according to the rules of the abstract machine, as described in 5.1.2.3. Furthermore, at every sequence point the value last stored in the object shall agree with that prescribed by the abstract machine, except as modified by the unknown factors mentioned previously. What constitutes an access to an object that has volatile-qualified type is implementation-defined.
Чтение переменной другим потокм/аппаратурой - это тоже unknown side effect.

Ну и по оптимизации - никаким туесосам компилятор ничего не должен - имеет полное право превращать a = 3 * 2; в a = 6; (какой ужас! туес написал ОПЕРАТОР, значит, он ему НУЖЕН, а тут какой-то компилятор малину портит), устранять избыточные обращения (записи либо чтения) не-volataile переменных и т.д.:
5.1.2.3 Program execution
3 In the abstract machine, all expressions are evaluated as specified by the semantics. An actual implementation need not evaluate part of an expression if it can deduce that its value is not used and that no needed side effects are produced (including any caused by calling a function or accessing a volatile object).
...
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.

9 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


И квалификатор volatile как раз и придуман для того, чтобы объяснять компилятору его права.
Не нравится - придумывайте свой суперязык и пищите свой суперкомпилятор, соответствующие Вашей супер-гениальности.

p.s. Господи, сколько народу не утруждает себя тем, чтобы понять, а потом вопит о глючности компиляторов... Думать большинству таки тяжело.
Я не говорю, что у меня не бывает проколов, но когда компилятор делает что-то не то, на что я рассчитывал - я сначала стандарт читаю, а не кричу о глюках.


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 45:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru