MiklPolikov 0 2 июня, 2021 Опубликовано 2 июня, 2021 · Жалоба Всем привет ! Перестал понимать, как работает оптимизация кода. Почему вот в этом примере, под отладкой, программа проходит все шаги ? Почему компилятор сразу не считает и не подставляет готовое значение sum ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 3 июня, 2021 Опубликовано 3 июня, 2021 · Жалоба 2 hours ago, MiklPolikov said: Почему вот в этом примере, под отладкой, программа проходит все шаги ? Добрый день! Я не знаком с отладчиком Кейла. Поэтому задам такой вопрос: а в листинге всё тоже без опитимизации? Может быть отладчик как-то для пользователя искуственно "добавляет" осмысленных действий, тогда как компилятор всё оптимизировал... Это просто предположение. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
ViKo 1 3 июня, 2021 Опубликовано 3 июня, 2021 · Жалоба Видимо, потому, что массив - static. То есть, всегда должен существовать в функции. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
MiklPolikov 0 7 июня, 2021 Опубликовано 7 июня, 2021 · Жалоба On 6/3/2021 at 9:49 AM, ViKo said: Видимо, потому, что массив - static. То есть, всегда должен существовать в функции. Да, действительно, убрать static помогло. Спасибо ! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 7 июня, 2021 Опубликовано 7 июня, 2021 · Жалоба 12 minutes ago, MiklPolikov said: Да, действительно, убрать static помогло. Гм... странно. Компилятор же умный должен быть. Видит же, что в данной ситуации этот массив больше нигде не используется. Мог бы и оптимизировать всё. Другое дело, если бы на этот массив передавался указатель во вне. Тогда да, ещё понятно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Палыч 6 8 июня, 2021 Опубликовано 8 июня, 2021 · Жалоба А, кто объяснит: почему оптимизирует, если убрать static? Один из элементов массива не определён - его значение = мусор (если static убрать). Следовательно, значение sum определить на этапе компиляции не представляется возможным... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jcxz 184 8 июня, 2021 Опубликовано 8 июня, 2021 · Жалоба 13 минут назад, Палыч сказал: А, кто объяснит: почему оптимизирует, если убрать static? Один из элементов массива не определён - его значение = мусор (если static убрать). Следовательно, значение sum определить на этапе компиляции не представляется возможным... Если static не убирать, то компилятор тоже не знает значение x[2], так как компилятор только помечает "поместить x в секцию bss с инициализацией 0", но в реале компоновщик может её и не 0 инициализировать. А без static: скорей всего компилятор должен выдать предупреждение об использовании неинициализированных данных. А вот почему автор его не увидел или проигнорировал - это уже к нему вопрос. PS: Да и вообще - разговор ни о чём, так как ТС не сделал самого главного - не привёл листинга (ни со static ни без). Что должно быть просто само собой разумеющимся для таких случаев. А без него - только гадание на кофейной гуще. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
haker_fox 60 8 июня, 2021 Опубликовано 8 июня, 2021 · Жалоба 6 minutes ago, jcxz said: ТС не сделал самого главного - не привёл листинга +1. Посоветовал автору это сделать в своём первом же посте. Но либо автор игнорит мои сообщения, либо действительно занимается гаданием) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться