-
- Почитав обсуждение про волотайл решил проверить одну вещь... abivan(428 знак., 20.10.2015 11:33)
- А слабо поиграться с индивидуальными volatile для членов структур на разных версиях IAR в каком-нить мегапроекте ? ;) - VL(20.10.2015 18:00, )
- Там, кажется, ещё и битовые поля были? - SciFi(20.10.2015 18:02)
- были, не предлагаю - "Ну мы ж не звери". Как-то я стал осторожнее в части обновления IAR. - VL(20.10.2015 18:09, )
- Вот-вот. Не сломалось - не чини. - SciFi(20.10.2015 18:17)
- были, не предлагаю - "Ну мы ж не звери". Как-то я стал осторожнее в части обновления IAR. - VL(20.10.2015 18:09, )
- Там, кажется, ещё и битовые поля были? - SciFi(20.10.2015 18:02)
- Дело житейское. Как-то чуть с ума не сошел разыскивая причину бага. Поделился своей бедой на форуме. SciFi тут же ткнул носом что нужно переменную volatile объявить ибо она в прерывании меняется. И все случилось. По мне так нужно было в стандарте Codavr(105 знак., 20.10.2015 12:15)
- Тогда уж почему бы компилятору не отслеживать изменение переменных в обработчиках прерываний. - _basile(20.10.2015 19:04, )
- Патамучта файлы компилируются раздельно и компилятор не в курсе, что там в другом файле делается. - LightElf(20.10.2015 19:10)
- Дык всё есть. Делаем низший уровень оптимизации - и готово. Если программа работает, то нет причин поднимать уровень оптимизации. Разве что из любви к искусству - чтобы оживить вот эти баги с volatile. Не оставлять же их в коде - неприлично как-то. - SciFi(20.10.2015 12:18)
- Однажды встал на грабли, когда после обновления версии прошивки устройства на объекте стали уходить в нирвану. Тогда взял для себя следующие правила: LightElf(263 знак., 22.10.2015 11:41)
- У меня такое было, прога работала пока оптимизацию не включил по-максимуму. Yft(66 знак., 20.10.2015 17:58)
- Вот это и есть истинная причина подымать уровень оптимизации. Чтобы "редко возникающие ошибки"(тм) повылазили на свет божий, а не сидели и ждали "своего часа":) - Скрипач(20.10.2015 12:49 - 12:57)
- Причины поднимать уровень оптимизации есть почти всегда иначе бы не заморачивальись лучшие умы компилеростроителей и математиков над этой фичей. Начиная от эекономии места и свремени, кончая причиной на всякий случай чтобы побыстрее работало, а то Codavr(22 знак., 20.10.2015 12:24)
- Фигня. Экономия места требуется крайне редко. А вот это "вдруг не хватит" - это обычный русский авось, потому что оптимизация, конечно, повышает шансы на успех, но вовсе его не гарантирует. - SciFi(20.10.2015 12:26)
- Экономия места - это не фигня, а деньги. Камешек с меньшим флешем меньше стОит. Пусть на 10 рублей, это практически ничто. А в сериях каждая тысяча штук изделий после будет давать 10.000 рублей. - vpv.vpv(20.10.2015 12:53)
- Вот и приведите статистику, как часто вам удавалось за счёт оптимизации выбрать более дешёвый МК? Только без фантазий, пожалуйста. - SciFi(20.10.2015 12:56)
- Как-то раз в мегу 8 удалось упихать код впритирку оптимизируя разные модули разными методами оптимизации. Недавно в STM32 впендюрил почти без зазора. Отлаживал на процессоре с большой памятью, но в итоге удалось получить приятный бонус в несколько Codavr(597 знак., 21.10.2015 10:50 - 10:56)
- Например, неск. лет назад перешли с Тини44А на Тини24А, уменьшив объем кода с ~2600 байт до 2008. Тогда разница в кристаллах была что-то около 12-15 рублей. Т.е сначала запустили серию, как есть (тайм ту маркет, матьё), а потом неспеша я изыскал vpv.vpv(179 знак., 20.10.2015 14:04)
- Ну, то есть раз в несколько лет. Вот и я о том же. - SciFi(20.10.2015 14:09)
- Вот и приведите статистику, как часто вам удавалось за счёт оптимизации выбрать более дешёвый МК? Только без фантазий, пожалуйста. - SciFi(20.10.2015 12:56)
- Нет не фигня. Была бы фигня компилеры писал бы каждый студент-двоешник, а иар с кейлом сосали бы лапу. Если это кому то не нужно, это не значит, что это никому не нужная фигня. - Codavr(20.10.2015 12:29 - 12:32)
- Если код пишет не студент-двоешник, то компилятору за ним делать уже нечего :) Так и бродит по вылизанному пространству и жалобно воет. - Николай Коровин(20.10.2015 17:22)
- Спасибо, кэп. Во-первых, конечно, иногда оптимизация нужна. Я просто напоминаю, что именно иногда. Во-вторых, есть конкуренция. SciFi(236 знак., 20.10.2015 12:34)
- Если бы она не была нужна, то Директор Яра уволил бы нахер весь отдел маркетинга, который не понимает какую экономию даст увольнение самых высокооплачиваемых специалистов и сокращение за счет этого цены продукта в разы. - Codavr(20.10.2015 12:41)
- По-моему, мы зациклились :-) SciFi(128 знак., 20.10.2015 12:45, ссылка)
- Явно требуется оптимизация :) - Codavr(20.10.2015 12:46)
- картинка (обсуждением навеяло) - De_User(20.10.2015 13:25, картинка)
- Явно требуется оптимизация :) - Codavr(20.10.2015 12:46)
- По-моему, мы зациклились :-) SciFi(128 знак., 20.10.2015 12:45, ссылка)
- Если бы она не была нужна, то Директор Яра уволил бы нахер весь отдел маркетинга, который не понимает какую экономию даст увольнение самых высокооплачиваемых специалистов и сокращение за счет этого цены продукта в разы. - Codavr(20.10.2015 12:41)
- Экономия места - это не фигня, а деньги. Камешек с меньшим флешем меньше стОит. Пусть на 10 рублей, это практически ничто. А в сериях каждая тысяча штук изделий после будет давать 10.000 рублей. - vpv.vpv(20.10.2015 12:53)
- Фигня. Экономия места требуется крайне редко. А вот это "вдруг не хватит" - это обычный русский авось, потому что оптимизация, конечно, повышает шансы на успех, но вовсе его не гарантирует. - SciFi(20.10.2015 12:26)
- Это сильно бы уменьшило возможности оптимизации компилятору и тащило бы кучу неиспользуемых переменных в действующий проект. - sav6622(20.10.2015 12:17)
- Тогда уж почему бы компилятору не отслеживать изменение переменных в обработчиках прерываний. - _basile(20.10.2015 19:04, )
- Как это лампочка может быть не volatile? Ведь тогда компилятору будет разрешено забить на эту лампочку. Она может не просто моргать, но и вовсе не включаться :-) - SciFi(20.10.2015 11:36)
- А слабо поиграться с индивидуальными volatile для членов структур на разных версиях IAR в каком-нить мегапроекте ? ;) - VL(20.10.2015 18:00, )
- Я не знаю, как конкретно работает GCC, но если IAR увидит, что если в переменную что-то пишется, но в данном месте потом не используется (при уровне оптимизации, отличном от нуля), то он её выкидывает не задумываясь. Какой смысл _вот здесь_ её vpv.vpv(838 знак., 19.10.2015 20:57)
- Тащемта - если прога занимает меньше килобайта-двух-ну-трёх - не ебите моск и пишите на асме, кто не может - мудак. Если больше - грызите кактус и тож не ебите моск.... Точка опоры(60 знак., 19.10.2015 21:32, картинка)
- :)) Писать на Асме нужно ну ОООчень редкие и критичные кусочки, я так думаю. Больше на асме ничего не надо писать - его надо знать. Чтобы, смотря в листинг, проверить, понял ли компилятор то, что от него хотят, или нет. - vpv.vpv(20.10.2015 10:38)
- Знать надо не асм, а систему команд. Потому что в асме есть ещё и макросы, и прочие примочки. SciFi(72 знак., 20.10.2015 10:40)
- Система команд - подмножество того, что крайне полезно знать. Надо знать, как ведёт себя линкер, смотреть, как распределяется память (и менять установки, если требуется). - vpv.vpv(20.10.2015 11:29)
- Ну и вообще полезно уметь пользоваться компьютером :-) - SciFi(20.10.2015 11:33)
- Я бы здесь уточнил, что нужно знать не асм, и не систему команд в отдельности, а Bill(71 знак., 20.10.2015 10:44)
- Система команд - подмножество того, что крайне полезно знать. Надо знать, как ведёт себя линкер, смотреть, как распределяется память (и менять установки, если требуется). - vpv.vpv(20.10.2015 11:29)
- Знать надо не асм, а систему команд. Потому что в асме есть ещё и макросы, и прочие примочки. SciFi(72 знак., 20.10.2015 10:40)
- это попытка холивара ASM-C в 2015г? - VL(19.10.2015 22:39, )
- Наверное нет... типа - констатация неидеальности мыслительного аппарата... И вчера вечером - был noir. - Точка опоры(20.10.2015 11:08)
- Накаркаешь. А вдруг asm станет скрепой? Трогать не моги! - SciFi(19.10.2015 22:43)
- Можно совет - не холивара ради. Смотрите в т.з. И выписку со своего личного счета в банке, а не в асм код. - Evgeny_CD(19.10.2015 22:00)
- :)) Писать на Асме нужно ну ОООчень редкие и критичные кусочки, я так думаю. Больше на асме ничего не надо писать - его надо знать. Чтобы, смотря в листинг, проверить, понял ли компилятор то, что от него хотят, или нет. - vpv.vpv(20.10.2015 10:38)
- Тащемта - если прога занимает меньше килобайта-двух-ну-трёх - не ебите моск и пишите на асме, кто не может - мудак. Если больше - грызите кактус и тож не ебите моск.... Точка опоры(60 знак., 19.10.2015 21:32, картинка)
- Добавь volatile в объявлении переменных. Откуда компилятору знать что TIMER1_OVF_vect где-то вызывается и переменная start_freq там использована? - Скрипач(18.10.2015 17:01)
- Судя по описанию, компилятор не прав. Наверное, что-то недоговариваете. Код привели урезанный или важные обстоятельства опустили. - SciFi(18.10.2015 11:32)
- Ответы всем: Точка опоры(14586 знак., 18.10.2015 12:48)
- смотрите внимательнее, в первом случае код Mahagam(531 знак., 18.10.2015 14:55)
- Допустим. Но почему явное занесение константы в ОЗУ зависит от расположения этого фрагмента внутри main'а? - Точка опоры(18.10.2015 15:33)
- Вопрос, конечно, интересный: SciFi(523 знак., 18.10.2015 16:58)
- Volatile указывает на наличие побочных эффектов. Любых. *исправил Скрипач(108 знак., 18.10.2015 17:04 - 19.10.2015 18:12)
- "Побочных эффектов. Любых." Это вы додумали, уважаемый. Стандарт говорит "побочные эффекты - это изменения в среде исполнения". ИМХО, они специально дыму напустили, потому что внятно эту концепцию не сформулируешь. SciFi(224 знак., 19.10.2015 18:22)
- А что есть оптимизация? Вот операцию |= компилятор даже для volatile переменных может сделать как setb x,y, хотя по идее должен делать честные rmw. Это оптимизация? - Олдфаг(20.10.2015 09:42, )
- Не только переменная, но и все операции с ней. Не будет ни common subexpression, ничего. *Вы же сами привели, ниже, цитату из стандарта. Она витиевата, но вполне читабельна. - Скрипач(19.10.2015 18:46 - 18:48)
- Цитата читабельна, но бессмысленнабельна. SciFi(332 знак., 19.10.2015 19:21)
- Есть понятие "контекст". Он делится на: локальный (внутри функции), файла (.с + инклуды) и глобальный (+зарезервированные имена, как минимум). Скрипач(872 знак., 20.10.2015 10:05 - 10:11)
- Спасибо, это и так понятно и неинтересно. Я всего лишь пытаюсь все эти махания руками соотнести с текстом стандарта, вот и всё. SciFi(977 знак., 20.10.2015 10:08 - 10:16)
- Не следует выбрасывать слово states. Под "изменением состояния" может подразумеваться все, что угодно. Это могут быть как "изменения первого рода", так и "изменения второго рода". Но, опять же, в данном контексте следует понимать первое. И Bill(110 знак., 20.10.2015 10:25)
- Побочные (по-боку, за бортом) эффекты - последствия выполнения команды (statement), которые не уложились в контекст (локальные переменные, переменные модуля, глобальные переменные) и поэтому не видны компилятору. - Скрипач(20.10.2015 12:56)
- По степени мутности сей пассаж способен тягаться с оригинальной формулировкой в стандарте :-) - SciFi(20.10.2015 12:59)
- Легко. Я бы просто дополнил текст стандарта вот этим (хотя бы в виде сноски) --> - SciFi(20.10.2015 10:32, ссылка)
- Хм ... я думаю, что всегда есть некий документ (закон, стандарт и т.д.), и есть комментарии к нему. Сам по себе документ должен быть кратким, а комментарии потому и называются комментариями, что в них подробно разъясняются положения данного Bill(25 знак., 20.10.2015 10:41)
- Такой документ с комментариями называется "С++
за 24 часадля чайников" 8) - Скрипач(20.10.2015 12:51)- Вообще-то я полагаю, что стандарты пишутся специалистами и для специалистов, и они должны быть понятны и тем и другим без комментариев. Или нет? - Bill(20.10.2015 15:02)
- Да. Экспертами по программированию компиляторов, для экспертов по программированию компиляторов. Скрипач(61 знак., 20.10.2015 15:19)
- Нет, но я представляю как они работают. Был опыт по проектированию компилятора для 8080/z80. Но это было очень давно. - Bill(20.10.2015 17:09)
- У меня тоже. В светлую студенческую пору :) А потом мне продали книжку по LEX/YACC :))) - Скрипач(20.10.2015 19:05)
- Нет, но я представляю как они работают. Был опыт по проектированию компилятора для 8080/z80. Но это было очень давно. - Bill(20.10.2015 17:09)
- Да. Экспертами по программированию компиляторов, для экспертов по программированию компиляторов. Скрипач(61 знак., 20.10.2015 15:19)
- Вообще-то я полагаю, что стандарты пишутся специалистами и для специалистов, и они должны быть понятны и тем и другим без комментариев. Или нет? - Bill(20.10.2015 15:02)
- Нет. Этот стандарт самодостаточен, пояснения в виде отдельного документа не предполагаются. Пояснения возникают в виде рабочих документов при выработке следующей версии стандарта, и они касаются только отличий от предыдущей версии. - SciFi(20.10.2015 10:45)
- Такой документ с комментариями называется "С++
- Хм ... я думаю, что всегда есть некий документ (закон, стандарт и т.д.), и есть комментарии к нему. Сам по себе документ должен быть кратким, а комментарии потому и называются комментариями, что в них подробно разъясняются положения данного Bill(25 знак., 20.10.2015 10:41)
- Побочные (по-боку, за бортом) эффекты - последствия выполнения команды (statement), которые не уложились в контекст (локальные переменные, переменные модуля, глобальные переменные) и поэтому не видны компилятору. - Скрипач(20.10.2015 12:56)
- "side effects, which are changes in the state of the execution environment" Скрипач(376 знак., 20.10.2015 10:14 - 10:20)
- Не следует выбрасывать слово states. Под "изменением состояния" может подразумеваться все, что угодно. Это могут быть как "изменения первого рода", так и "изменения второго рода". Но, опять же, в данном контексте следует понимать первое. И Bill(110 знак., 20.10.2015 10:25)
- Спасибо, это и так понятно и неинтересно. Я всего лишь пытаюсь все эти махания руками соотнести с текстом стандарта, вот и всё. SciFi(977 знак., 20.10.2015 10:08 - 10:16)
- Что именно непонятно? Вроде данный вопрос столько раз обсуждался. Или нет? - Bill(20.10.2015 09:31)
- Но тема-то интересная. А что непонятно, я сформулировал в виде вопроса. Вы его читали? Или нет? - SciFi(20.10.2015 09:46)
- Это прост термин side effect(60 знак., 21.10.2015 15:02, )
- Но тема-то интересная. А что непонятно, я сформулировал в виде вопроса. Вы его читали? Или нет? - SciFi(20.10.2015 09:46)
- Есть понятие "контекст". Он делится на: локальный (внутри функции), файла (.с + инклуды) и глобальный (+зарезервированные имена, как минимум). Скрипач(872 знак., 20.10.2015 10:05 - 10:11)
- Цитата читабельна, но бессмысленнабельна. SciFi(332 знак., 19.10.2015 19:21)
- Под побочными эффектами имеются ввиду ошибки компиляции? ;) Их 5! VL(613 знак., 19.10.2015 08:23, )
- Отличная фраза, только хз что означает. "side effects, which are changes in the state of the execution environment" - поди разберись. Короче, это всё 3,14здёж и провокация, но volatile здесь должен решить проблему. - SciFi(18.10.2015 17:40)
- "Побочных эффектов. Любых." Это вы додумали, уважаемый. Стандарт говорит "побочные эффекты - это изменения в среде исполнения". ИМХО, они специально дыму напустили, потому что внятно эту концепцию не сформулируешь. SciFi(224 знак., 19.10.2015 18:22)
- Volatile указывает на наличие побочных эффектов. Любых. *исправил Скрипач(108 знак., 18.10.2015 17:04 - 19.10.2015 18:12)
- это уже от умений и знаний компилятора зависит. циклы подвергаются отдельной оптимизации. - Mahagam(18.10.2015 16:52)
- Вопрос другой: зачем, с какой целью нужно дразнить режим оптимизации единственным использованием переменной, спрашивается? - De_User(18.10.2015 16:02 - 16:28)
- Уже писал, что это оставил "на вырост". Если по усложнению алгоритма понадобится менять значения стартовое и приращения - почти всё готово. А также - не вполне понимаю, как правильно написать xxx_freq=round(const1*const2/const3). Поэтому сперва Точка опоры(51 знак., 18.10.2015 21:12 - 21:15, картинка)
- Гы, ржака! "Режим оптимизации" - это искусственный разум, вышедший из-под контроля? Я-то думал, что есть
3 закона робототехникистандарт языка Си :-) - SciFi(18.10.2015 16:08)
- Вопрос, конечно, интересный: SciFi(523 знак., 18.10.2015 16:58)
- Допустим. Но почему явное занесение константы в ОЗУ зависит от расположения этого фрагмента внутри main'а? - Точка опоры(18.10.2015 15:33)
- смотрите внимательнее, в первом случае код Mahagam(531 знак., 18.10.2015 14:55)
- Ответы всем: Точка опоры(14586 знак., 18.10.2015 12:48)
- start_freq, судя по представленному коду, не используется вообще. так? ну так что поменяется если её выбросить? - Mahagam(18.10.2015 10:21)
- Классический случай иррациональное веры, что volatile делает многобайтные операции атомарными. - Олдфаг(18.10.2015 00:51, )
- А где там volatile? - Bill(18.10.2015 12:05)
- Зато оптимизатор переменную не выкинет. - De_User(18.10.2015 10:27)
- А что не так? Оптимизатор мог бы в обоих случаях напрямую константы юзать, но видать несовершенен. Если хочешь чтобы значения в озу все же появились - грохни оптимизацию, пиши volatile или врисуй где нить фейковую операцию типа x++; x--; - ASDFS(18.10.2015 00:39)
- ++ -- выкинет. Оптимизатор сцуко умный. Надо писать volatile или использовать барьеры. - 3m(19.10.2015 22:37)
- Можно включить генерацию asm-файла и просмотреть результат. + объявить start_freq и sweep_freq как Volatile - AU08(18.10.2015 00:25 - 00:31)
- взрослый дядька вроде, а все в аврки играется... - danuna(18.10.2015 00:18)
- Лишь бы доход приносило. Положить один кирпич тоже копейки стОит. Как говорит мой бывший коллега, "Курочка по зёрнышку клюёт, а к вечеру весь двор в
говн.." - vpv.vpv(19.10.2015 21:07) - А какими взрослый должен играться? - Bill(18.10.2015 12:40)
- Вот хорошие игрушки: XC7V2000T-G2FLG1925E, XC7VH870T-G2FLG1932E USSR(143 знак., 18.10.2015 13:15, )
- Хорошие камни. Ими в Чапаева сыграть можно, если доска есть. Или в соседа кинуть - как сюрекен. - Evgeny_CD(18.10.2015 16:19)
- Доска то есть, только камни к ней припаяны. Ну и сыграть на HAPS-80 конечно можно, но очень недешево.. USSR(133 знак., 18.10.2015 17:02, )
- "Сколько камней? - 15. - Двух камней не хватает. - Каких двух камней не хватает? - На один камень часы положить, другим - прихлопнуть." © - SciFi(18.10.2015 16:23)
- Хорошие камни. Ими в Чапаева сыграть можно, если доска есть. Или в соседа кинуть - как сюрекен. - Evgeny_CD(18.10.2015 16:19)
- Вот хорошие игрушки: XC7V2000T-G2FLG1925E, XC7VH870T-G2FLG1932E USSR(143 знак., 18.10.2015 13:15, )
- Наговорил? Отойди, не стой в наговоренном. - Точка опоры(18.10.2015 12:30)
- Чего сказать-то хотел? Для многих задач AVR до сих пор вполне удачная архитектура, и камни на этом ядре вполне качественные. - Evgeny_CD(18.10.2015 00:34)
- бгг. ну давай холивар еще устроим, какие диски дольше нерасслаиваются - TDK или Verbatim - danuna(18.10.2015 01:40)
- Лишь бы доход приносило. Положить один кирпич тоже копейки стОит. Как говорит мой бывший коллега, "Курочка по зёрнышку клюёт, а к вечеру весь двор в
- 250B524 - 28 бит, однако. - Evgeny_CD(17.10.2015 23:55)
- Почитав обсуждение про волотайл решил проверить одну вещь... abivan(428 знак., 20.10.2015 11:33)