ส็็็็็็็็็็็็็็็็็็็็็็็็็༼ ຈل͜ຈ༽ส้้้้้้้้้้้้้้้้้้้้้้้
-
- Массив - чтобы компилятор не выкинул считывание из якобы пустого, голову - чтобы с хвостом нормально сравнивал. Это то, на что с иаром нарвался... Andreas(172 знак., 18.03.2016 09:48)
- это похоже на "функциональщину головного мозга" - IBAH(17.03.2016 15:21, ссылка)
- Зависит от... В общем случае volatile не является memory barrier'ом, ровно как и наоборот, явный memory barrier (__sync_syncrhronize() в gcc) может ничего никуда не записать, если без volatile. Вот страшненькая история по ссылкам. Могу добавить, fk0(200 знак., 17.03.2016 12:21 - 12:32, ссылка)
- Очевидно, этот gcc недоделанный. Кстати, в стандарте про барьеры ни слова. Как так? - SciFi(18.03.2016 13:26)
- Тебе вдогонку ещё баг. Операция txhead++ нихрена не атомарная на многих архитектурах: честный инкремент умеют только m68k, x86, z80 и прочее CISC старьё, да и там жди проблем если процессоров больше одного. На современных RISC это, как правило, fk0(343 знак., 17.03.2016 12:31)
- Тут атомарность по барабану. В более сложных случаях - хз, будет день - будет пища. - SciFi(17.03.2016 17:33)
- Не догоняю. a=2; b=2; c=a+b; может компилироваться как a=2; c=a+b; b=2; ? - VL(17.03.2016 12:07,
)
- У тебя хреновый пример, ибо содержит подъ2,718бку. Но суть именно такова: компилятору не запрещено менять порядок действий. Никогда не видел штоле, как курсор скачет, когда идёшь по коду в отладчике на высоком уровне оптимизации? - SciFi(17.03.2016 18:07)
- Прыжки видел тыщу раз, потому что все проекты на высшей оптимизации. Но ни разу не видел ошибок из-за изменения порядка. Ты придумал хреновое объяснение для втыркивания volatile. - VL(17.03.2016 21:48,
)
- Ошибок не было, должно быть, потому, что ты таки ставишь volatile там, где оно надо. Такшта норамальное объяснение, пеши исчо :-) - SciFi(18.03.2016 08:40)
- не могу понять - то ли доброе слово сказал, то ли нахрен послал :) Но тебя куда-то не туда несет - с разными строками проблем быть не может, компилятор разруливает это без всяких volatile. - VL(18.03.2016 11:10,
)
- Нет, не так. Может переставлять, ему разрешено (если volatile там нет). Лень копаться в дизассемблере, чтобы пример привести. Вот тебе с просторов тырнета --> - SciFi(18.03.2016 11:23 - 11:27, ссылка)
- Угу, интересно. Только нужно здраво обозначить угрозу и простые способы решения. Флаги обновления обычно ставятся в прерываниях, в основном цикле будет пофиг, в какой последовательности что ставилось. Volatile нужен, чтобы вообще флаг прочитался. VL(185 знак., 18.03.2016 12:44,
)
- Я уже утомился тебе что-либо доказывать. Доказывай сам :-) - SciFi(18.03.2016 12:49)
- Повторюсь, но и при наличии volatile операции в функции могут быть переставлены если результат на выходе функции такой же получается. - fk0(18.03.2016 11:24)
- Это уже сектантство какое-то. Откуда дровишки? Как компилятор может знать, что "результат такой же"? Может быть, чьи-то шаловливые ручки накрутили зависимостей снаружи неочевидным образом? - SciFi(18.03.2016 11:29)
- Ссылку я тебе уже давал. Не знаю какой стандарт об этом говорит, но синхронизация обращений к памяти производится далеко не всегда, а только при вызове функций и ещё когда-то. В теле функции синхронизации никто не обещает. Далее, стандарт C fk0(497 знак., 18.03.2016 13:04, ссылка)
- Ты рассказываешь про sequence points штоле? Коли так, имей в виду, они не только на входе в функцию, но и ещё в 100500 местах: SciFi(1103 знак., 18.03.2016 13:28)
- Ссылку я тебе уже давал. Не знаю какой стандарт об этом говорит, но синхронизация обращений к памяти производится далеко не всегда, а только при вызове функций и ещё когда-то. В теле функции синхронизации никто не обещает. Далее, стандарт C fk0(497 знак., 18.03.2016 13:04, ссылка)
- Это уже сектантство какое-то. Откуда дровишки? Как компилятор может знать, что "результат такой же"? Может быть, чьи-то шаловливые ручки накрутили зависимостей снаружи неочевидным образом? - SciFi(18.03.2016 11:29)
- Угу, интересно. Только нужно здраво обозначить угрозу и простые способы решения. Флаги обновления обычно ставятся в прерываниях, в основном цикле будет пофиг, в какой последовательности что ставилось. Volatile нужен, чтобы вообще флаг прочитался. VL(185 знак., 18.03.2016 12:44,
- Нет, не так. Может переставлять, ему разрешено (если volatile там нет). Лень копаться в дизассемблере, чтобы пример привести. Вот тебе с просторов тырнета --> - SciFi(18.03.2016 11:23 - 11:27, ссылка)
- не могу понять - то ли доброе слово сказал, то ли нахрен послал :) Но тебя куда-то не туда несет - с разными строками проблем быть не может, компилятор разруливает это без всяких volatile. - VL(18.03.2016 11:10,
- Ошибок не было, должно быть, потому, что ты таки ставишь volatile там, где оно надо. Такшта норамальное объяснение, пеши исчо :-) - SciFi(18.03.2016 08:40)
- Прыжки видел тыщу раз, потому что все проекты на высшей оптимизации. Но ни разу не видел ошибок из-за изменения порядка. Ты придумал хреновое объяснение для втыркивания volatile. - VL(17.03.2016 21:48,
- Ваащета НОРМАЛЬНЫЙ компилятор обязан ЭТО скомпилировать в a=2; b=2; c=4; :)) - MBedder(17.03.2016 12:13)
- Ага, щас. Если ни одна переменная не используется, скомпилируется в пустой код. - SciFi(17.03.2016 17:37)
- У тебя хреновый пример, ибо содержит подъ2,718бку. Но суть именно такова: компилятору не запрещено менять порядок действий. Никогда не видел штоле, как курсор скачет, когда идёшь по коду в отладчике на высоком уровне оптимизации? - SciFi(17.03.2016 18:07)
- Иар уже побеспокоился за индусов:) Если и массив и указатель volatile и меняются в одной строке то будет предупреждение>>> - 1111111(16.03.2016 16:16, ссылка)
- Знаю я эту фишку. Жутко раздражает, когда не по делу, то есть в 95% случаев :-) - SciFi(16.03.2016 16:28)
- #pragma diag_suppress=Pa082 спасет отца русской демократии. Я отключил, реально опасных случаев немного и они известны еще на этапе продумывания алгоритма - 1111111(16.03.2016 16:37)
- Iar, етить. Иначе задолбает... Гудвин(212 знак., 16.03.2016 16:48)
- #pragma diag_suppress=Pa082 спасет отца русской демократии. Я отключил, реально опасных случаев немного и они известны еще на этапе продумывания алгоритма - 1111111(16.03.2016 16:37)
- Знаю я эту фишку. Жутко раздражает, когда не по делу, то есть в 95% случаев :-) - SciFi(16.03.2016 16:28)