-
- С помощью godbolt.org проверил как влияет volatile в параметре функции. При наличии volatile переданное через регистр значение сохраняется в стек и дальше читается из стека, оптимизация практически не работает. Без volatile все хорошо оптимизируется. Причем в объявлении функции можно написать volatile, а в реализации не писать, или наоборот, компилятор предупреждений не выдает. AlexBi(333 знак., 30.07.2024 16:18)
- Логика как раз понятна, пока выполнялся код проверки первого
условия, переменная могла измениться и на втором условии будет
выполнена проверка с актуальным значением. _ctac_(93 знак., 30.07.2024 15:40)
- Как раз, если понять, логика ясна и предсказуема. - Nikolay_Po(30.07.2024 16:05)
- В принципе понятна логика испуганных вкладчиков, которые по команде службы безопасности центробанка переводят свои сбережения на безопасный счёт. Но есть нюанс... - SciFi(30.07.2024 15:48)
- Тябя надули дважды. Ты оба раза это видишь, и продолжаешь испытывать "легкое недоумение" ? :-) - il-2(30.07.2024 15:15)
- Если объявлен волатиле, то компилятор будет брать постоянно из этой ячейки. А если не волятиле, то может взять последнюю копию из какого-нибудь регистра. Во всяком случае, IAR AVR так себя ведёт. - vpv.vpv(30.07.2024 14:40)
- Ну будет давать. "И чё". Это не должно ничего поломать. Разве что
"localtime < tcp_timer" я бы первым поставил. - POV(30.07.2024 14:04)
- А я бы вообще убрал, тогда и условие будет работать как надо. - LightElf(30.07.2024 17:57)
- Там вычитание ансигнедов. Да, за счет переполнения условия будет
выполнено, но это некрасиво.. так сказать случайно. - POV(30.07.2024 19:47)
- Напротив, красиво. К тому же, если не так, то как? 64-разрядный
счётчик? - SciFi(30.07.2024 20:05)
- Для критических задач я контроллирую как-то типа... POV(240 знак., 30.07.2024 20:24, картинка)
- Хе-хе. Что интересно, в 2011 году товарищ Симон Голдшмидт заметил,
что lwip для вычисления разности двух временных меток использует
похожую мозголомную арифметику. С тех пор там простая разность.
Профит! SciFi(4 знак., 30.07.2024 20:51, ссылка, ссылка)
- У меня всего два места, где разность неуместна )) - POV(30.07.2024 21:00)
- Хе-хе. Что интересно, в 2011 году товарищ Симон Голдшмидт заметил,
что lwip для вычисления разности двух временных меток использует
похожую мозголомную арифметику. С тех пор там простая разность.
Профит! SciFi(4 знак., 30.07.2024 20:51, ссылка, ссылка)
- Для критических задач я контроллирую как-то типа... POV(240 знак., 30.07.2024 20:24, картинка)
- Напротив, красиво. К тому же, если не так, то как? 64-разрядный
счётчик? - SciFi(30.07.2024 20:05)
- Там вычитание ансигнедов. Да, за счет переполнения условия будет
выполнено, но это некрасиво.. так сказать случайно. - POV(30.07.2024 19:47)
- У них подобным образом все интервалы формируются. Наверное и правда от этого хуже не будет, спасут механизмы защиты данных в TCP, но как-то не красиво выглядит. А порядок сравнений в if-е у них правильный, с точки зрения микрооптимизации, т.к. первое условие будет выполняться гораздо чаще чем второе, т.е. общее быстродействие будет чуть выше. - AlexBi(30.07.2024 16:23)
- А я бы вообще убрал, тогда и условие будет работать как надо. - LightElf(30.07.2024 17:57)
- Параметр функции не может быть volatile, т.к. передаётся через РОН. А регистр РОН никак не volatile. M75(120 знак., 30.07.2024 13:09)
- Мсье Хомяк пытается льстить товарищам китайцам. Я же, как человек
испорченный, скажу так: это простая некомпетентность. - SciFi(30.07.2024 12:18)
- Причем двойная. В операторе if () тоже накосячено - il-2(30.07.2024 15:12)
- Я туда не заглядывал. Да уж, рукалицо... - SciFi(30.07.2024 15:45)
- ХЗ, мне бы даже при моей некомпетентности было бы впадлу стока букаф печатать. - mse homjak(30.07.2024 13:37)
- Причем двойная. В операторе if () тоже накосячено - il-2(30.07.2024 15:12)
- Чисто предположаю, что волотайл был написан чисто для отладки, а удалить забыли. Так бы он располагался в регистре, а так, в памяти. Оно ещо и работать быстрее будет. Если волотайл удолить. - mse homjak(30.07.2024 11:29)