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

 
 
> Вопрос по volatile
Alt.F4
сообщение Jan 14 2017, 09:00
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 468
Регистрация: 28-03-10
Из: Беларусь
Пользователь №: 56 256



Здравствуйте.
В очередной раз начитался про volatile + чудные компиляторы и насмотревшись "глупых" примеров родился вопрос: стоит ли указывать переменные и/или кольцевые буферы, используемые в прерывании, как volatile, если ни одна из переменных при объявлении не принимает значение, все необходимые начальные значения прописываются в отдельной функции (все изменения таких переменных в любом случае делаются атомарно, с запретом прерываний)?
Т.е. компилятор при работе с такими переменными (например, байтом флагов) в принципе не располагает информацией о их значениях, чтобы как-то вырезать условия с их проверкой, как изображается в примерах с неиспользованием volatile.
Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aiwa
сообщение Jan 18 2017, 22:36
Сообщение #2


Местный
***

Группа: Участник
Сообщений: 301
Регистрация: 13-12-15
Из: Харьков
Пользователь №: 89 682



Цитата(Укушенный воблой @ Jan 18 2017, 20:31) *
А если я работаю с переменной через указатель на неё, то что?
Я должен такую переменную объявлять как волатайл?

Правила те же: указатель должен быть объявлен как указатель на volatile-переменную.
Естественно компилятор сгенерирует соответствующий код: перед каждым использованием переменной он будет считывать ее значение заново.


Цитата(DASM @ Jan 18 2017, 16:32) *
Господа никогда не понимал таких споров. Процесс важен или результат? Сюрпризы возможны, не проще ли дать volatile и забыть?

"Споры" нужны для того, чтобы понять при каких ситуациях "сюрпризы возможны".
Go to the top of the page
 
+Quote Post
Укушенный воблой
сообщение Jan 19 2017, 04:18
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 197
Регистрация: 8-07-16
Пользователь №: 92 484



Цитата(aiwa @ Jan 18 2017, 22:36) *
Правила те же: указатель должен быть объявлен как указатель на volatile-переменную.

А сама переменная?
Сама переменная должна объявляться как волатАЙл если её используют через указатель?
Что-то то я не видел в реальном коде разных разработчиков этого

Причем используют неявно. Без использования операции "взятие адреса" (амперсанд)
Go to the top of the page
 
+Quote Post
XVR
сообщение Jan 19 2017, 06:34
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(Укушенный воблой @ Jan 19 2017, 07:18) *
А сама переменная?
Сама переменная должна объявляться как волатАЙл если её используют через указатель?
Нет. Компилятор вещь достаточно умная - он понимает что такое указатель и к чему может привести взятие адреса переменной (для этой переменной)
Он даже понимает кое что в том, куда этот указатель может указывать - см ключевое слово restrict и опцию ansi alias ( http://www.atmos.washington.edu/~ovens/ifo...nsi_alias_f.htm )

Go to the top of the page
 
+Quote Post
Укушенный воблой
сообщение Jan 19 2017, 17:24
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 197
Регистрация: 8-07-16
Пользователь №: 92 484



Цитата(XVR @ Jan 19 2017, 06:34) *
Нет. Компилятор вещь достаточно умная - он понимает что такое указатель и к чему может привести взятие адреса переменной (для этой переменной)

Вы не читатель?
Так я повторю:
Цитата(Укушенный воблой @ Jan 19 2017, 04:18) *
Причем используют неявно. Без использования операции "взятие адреса" (амперсанд)

Go to the top of the page
 
+Quote Post
XVR
сообщение Jan 19 2017, 19:21
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 3 123
Регистрация: 7-04-07
Из: Химки
Пользователь №: 26 847



Цитата(Укушенный воблой @ Jan 19 2017, 20:24) *
Вы не читатель?
Так я повторю:
Сама переменная должна объявляться как волатАЙл если её используют через указатель?
Причем используют неявно. Без использования операции "взятие адреса" (амперсанд)
Так не бывает sm.gif
Приведите пример.

Go to the top of the page
 
+Quote Post
Укушенный воблой
сообщение Jan 19 2017, 19:42
Сообщение #7


Частый гость
**

Группа: Участник
Сообщений: 197
Регистрация: 8-07-16
Пользователь №: 92 484



Цитата(XVR @ Jan 19 2017, 20:21) *
Так не бывает sm.gif

Зачем?
С Вами и так все ясно.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Alt.F4   Вопрос по volatile   Jan 14 2017, 09:00
- - Lagman   Для 51 в кейле такое объяснение http://www.keil.co...   Jan 14 2017, 18:17
- - XVR   Чтения этих переменных делается напрямую или тоже ...   Jan 15 2017, 20:39
- - Alt.F4   Если вообще смотреть на проблемы в примерах, то он...   Jan 15 2017, 21:05
- - jcxz   Цитата(Alt.F4 @ Jan 14 2017, 12:00) В оче...   Jan 16 2017, 13:19
|- - Укушенный воблой   Цитата(jcxz @ Jan 16 2017, 14:19) Атомарн...   Jan 18 2017, 16:14
|- - zltigo   Цитата(Укушенный воблой @ Jan 18 2017, 18...   Jan 18 2017, 17:06
|- - Baser   Цитата(zltigo @ Jan 18 2017, 19:06) Никак...   Jan 18 2017, 18:09
- - SlavaV   Тогда и я своё видение изложу В документацию не л...   Jan 16 2017, 14:43
|- - jcxz   Цитата(SlavaV @ Jan 16 2017, 17:43) PS а ...   Jan 16 2017, 15:00
- - SlavaV   Переменная не "путешествует" во время вы...   Jan 16 2017, 15:14
|- - jcxz   Цитата(SlavaV @ Jan 16 2017, 18:14) Перем...   Jan 16 2017, 15:41
- - SlavaV   int x; void f() { x += N1; //1 ... x += N2; //2...   Jan 16 2017, 15:55
|- - Сергей Борщ   QUOTE (SlavaV @ Jan 16 2017, 17:55) вы сч...   Jan 16 2017, 16:44
|- - gerber   Цитата(SlavaV @ Jan 16 2017, 18:55) вы сч...   Jan 16 2017, 16:55
|- - jcxz   Цитата(gerber @ Jan 16 2017, 19:55) А в в...   Jan 16 2017, 17:40
- - Alt.F4   Снова приведен пример, как и во всех статьях. В ре...   Jan 16 2017, 17:10
- - XVR   Пример (https://gcc.godbolt.org/) Код (компилятор ...   Jan 16 2017, 19:03
- - Alt.F4   Цитата... Дальше например можете в цикле ждать ког...   Jan 17 2017, 07:57
|- - jcxz   Цитата(Alt.F4 @ Jan 17 2017, 10:57) Если ...   Jan 17 2017, 14:01
- - RobFPGA   Приветствую! Не забывайте о том что не только...   Jan 17 2017, 14:20
- - Alt.F4   jcxz, вот именное такие: "например можете в ц...   Jan 17 2017, 21:45
|- - jcxz   Цитата(Alt.F4 @ Jan 18 2017, 00:45) Значи...   Jan 18 2017, 08:39
- - Kabdim   А если включить lto то оптимизироваться будет совс...   Jan 18 2017, 08:44
- - Alt.F4   jcxz, сейчас я тоже начну вас оскорблять Изменять...   Jan 18 2017, 10:53
|- - jcxz   Цитата(Alt.F4 @ Jan 18 2017, 13:53) jcxz,...   Jan 18 2017, 11:12
|- - RobFPGA   Приветствую! Цитата(Alt.F4 @ Jan 18 2017...   Jan 18 2017, 11:23
- - Alt.F4   jcxz, читаю "на входе в эту функцию, компилят...   Jan 18 2017, 11:24
|- - RobFPGA   Приветствую! Цитата(Alt.F4 @ Jan 18 2017,...   Jan 18 2017, 11:49
|- - Baser   Цитата(Alt.F4 @ Jan 18 2017, 13:24) jcxz,...   Jan 18 2017, 11:52
|- - jcxz   Цитата(Alt.F4 @ Jan 18 2017, 14:24) И как...   Jan 18 2017, 14:05
- - Alt.F4   RobFPGA, думаю, если буфер объявлен глобально, то ...   Jan 18 2017, 12:33
|- - Baser   Цитата(Alt.F4 @ Jan 18 2017, 14:33) Ну ка...   Jan 18 2017, 14:06
|- - RobFPGA   Приветствую! Цитата(Baser @ Jan 18 2017, ...   Jan 18 2017, 15:08
- - aiwa   Цитата(Alt.F4 @ Jan 17 2017, 23:45) RobFP...   Jan 18 2017, 13:54
- - DASM   Господа никогда не понимал таких споров. Процесс в...   Jan 18 2017, 14:32
- - Baser   Цитата(RobFPGA @ Jan 18 2017, 17:08) Прос...   Jan 18 2017, 16:38
- - Укушенный воблой   А если я работаю с переменной через указатель на н...   Jan 18 2017, 18:31
|- - jcxz   Цитата(Укушенный воблой @ Jan 18 2017, 21...   Jan 19 2017, 07:37
|- - XVR   Цитата(Укушенный воблой @ Jan 19 2017, 22...   Jan 19 2017, 19:52
- - Alt.F4   jcxz, а мне Ваши примеры напоминают троллинг, повт...   Jan 19 2017, 06:54
|- - jcxz   Цитата(Alt.F4 @ Jan 19 2017, 09:54) jcxz,...   Jan 19 2017, 07:09
|- - jcxz   Цитата(Alt.F4 @ Jan 19 2017, 09:54) Да и ...   Jan 19 2017, 07:18
- - Сергей Борщ   QUOTE (Alt.F4 @ Jan 19 2017, 08:54) Пока ...   Jan 19 2017, 07:11
- - Alt.F4   ЦитатаОчевидно что Вы и читать исходники не умеете...   Jan 19 2017, 07:32
- - Укушенный воблой   Вы ошибаетесь. Просто я не хочу обсуждать вкус уст...   Jan 19 2017, 20:30
|- - XVR   Цитата(Укушенный воблой @ Jan 19 2017, 23...   Jan 20 2017, 09:40
|- - AHTOXA   Цитата(XVR @ Jan 20 2017, 14:40) Требую п...   Jan 20 2017, 11:19
|- - zltigo   Цитата(AHTOXA @ Jan 20 2017, 13:19) Ну вы...   Jan 20 2017, 20:21
- - aiwa   Цитата(Alt.F4 @ Jan 19 2017, 09:32) Я не ...   Jan 20 2017, 04:17
|- - jcxz   Цитата(aiwa @ Jan 20 2017, 07:17) res_yes...   Jan 20 2017, 10:03
|- - Укушенный воблой   Цитата(aiwa @ Jan 20 2017, 05:17) 2. втор...   Jan 21 2017, 09:09
|- - XVR   Цитата(Укушенный воблой @ Jan 21 2017, 12...   Jan 23 2017, 10:13
- - ViKo   Побейтесь еще за пустой мешок!   Jan 20 2017, 09:57
- - aiwa   Цитата(jcxz @ Jan 20 2017, 12:03) Здесь к...   Jan 20 2017, 10:28
- - sigmaN   Цитата(Сергей Борщ @ Jan 19 2017, 10:11) ...   Jan 22 2017, 17:59
- - Укушенный воблой   Нет. Если с умом подходить к разработке программ...   Jan 25 2017, 15:51


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

 


RSS Текстовая версия Сейчас: 31st July 2025 - 11:12
Рейтинг@Mail.ru


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