24.06.2019, 15:59
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,629
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от NewWriter
|
никто и не утверждал, что const защищает стопроцентно данные
|
Если компилятор положит это в секцию text, то данные уже будут 100% защищены. Другое дело, что при жесткой оптимизации компилятор может вообще не обращать на const и запихать данные в память...
__________________
Союз Советских Социалистических Округов Северной Америки
|
|
|
|
24.06.2019, 16:20
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Изначально я об этом и писал, что const-данные в конечной прошивке будут лежать во флеше. Случаи запуска из RAM не рассматриваем.
Но тут кто-то начал возмущаться, что const че-то там оптимизирует в передаче параметров, перепутав поведение при static и volatile.
Затем всё это перемешалось в кучу и хрен пойми кто о чем говорит.
Ну а если передавать в фцию с const-параметром не-const переменную, то компилятор конечно предупредит о бесполезности const в параметре.
Я же говорю - скрины экспериментов фстудию. А неразбериха получилась из-за того, что спорщики опираются на общеуниверсальные рассуждения, без привязки к особенностям эмбедда и микроконтроллеров. В эмбедде с жёсткой прошивкой - свои особенности.
Последний раз редактировалось NewWriter; 24.06.2019 в 16:38.
|
|
|
|
24.06.2019, 16:42
|
|
Прописка
Регистрация: 17.03.2015
Сообщений: 294
Сказал спасибо: 0
Сказали Спасибо 220 раз(а) в 126 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Вот упоротые
|
|
|
|
24.06.2019, 16:45
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Эксперимент поставлен неправильно. Буду дома, объясню, кто тут упоротый.
|
|
|
|
24.06.2019, 17:35
|
|
Почётный гражданин KAZUS.RU
Регистрация: 27.01.2005
Адрес: Россия, КЧР, Нижний Архыз
Сообщений: 3,629
Сказал спасибо: 115
Сказали Спасибо 814 раз(а) в 591 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от ProtAS-13
|
Вот упоротые
|
вот упоротый...
Ты попробуй это скомпилять при -Wall -Werror -Wextra! Понятно, что ты ложил на варнинги. А компилятор предупреждал же, что const в аргументе бесполезен!
И, кстати, const в аргументах функции обычно - гарантия того, что входные данные не будут внутри этой функции меняться. А здесь налицо противоречие. Ну и на кой черт тогда const писать? Западлостроением чтобы заниматься?
Да, еще веселей будет, если в эту функцию передадут реально константу, лежащую во флеше. UB обеспечено! А кое-где МК может и в hardfault уйти...
__________________
Союз Советских Социалистических Округов Северной Америки
|
|
|
|
24.06.2019, 19:01
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Такс... Ну вот, я дома, поужинал, и теперь можно немного времени выделить.
Есть такое дело, значить.. Ну и что вы теперь скажете, мм? Ну, думайте, думайте, думайте!
А пока скрипите мозгами, скажу, что в первом случае вы имеете массив переменных, инициализованных константными значениями из флеша. Во втором случае, вы имеете массив константных переменных, размещенный во флеше. Как видите на втором скрине, в обоих случаях во флеше находятся эти самые массивы констант.
Вооот, пока изучайте эту часть до просветления, а позже я вам наглядно обрисую и остальные моменты.
|
|
|
|
24.06.2019, 20:46
|
|
Прописка
Регистрация: 10.03.2016
Сообщений: 114
Сказал спасибо: 14
Сказали Спасибо 46 раз(а) в 41 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Случай - частный, бред - общий. Ждём новый откровений от самого себя.
|
|
|
|
24.06.2019, 20:50
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Ну зато про самого ТЕБЯ мы хорошо знаем, что ты ни одного реального примера работы за все время и не приводил, сколько тебя не ловили на этом, ни разу кроме бреда ты не генерировал ![Улыбка](images/smilies/icon_smile.gif) )) Можешь даже не отвечать - мне то это не надо доказывать ![Улыбка](images/smilies/icon_smile.gif) ))
Кста, то есть, это ты щас пытаешься доказать, что строка "Message" НЕ хранится во флеше при нормальной работе проги из флеша? ![Улыбка](images/smilies/icon_smile.gif) )) Так-таааак.. Что, уже совсем маразм забил моск?
|
|
|
|
25.06.2019, 00:03
|
|
Прописка
Регистрация: 17.03.2015
Сообщений: 294
Сказал спасибо: 0
Сказали Спасибо 220 раз(а) в 126 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
Сообщение от eddy
|
Ты попробуй это скомпилять при -Wall -Werror -Wextra
|
Конструкция, указанная в примере, соответствует стандарту, поэтому никаких ни error, ни warning нет.
Сообщение от eddy
|
А компилятор предупреждал же, что const в аргументе бесполезен!
|
Допустим, не предупреждал, а давал ошибку, что изменяется переменная, помеченная квалификатором const, о чем, собственно здесь уже несколько страниц талдычат.
Сообщение от eddy
|
А кое-где МК может и в hardfault уйти...
|
А кто ж говорит, что так нужно делать - это же пример, чтобы показать, что квалификатор const можно обойти.
Сообщение от NewWriter
|
... в первом случае ... Во втором случае ...
|
Вы, похоже, уже с собой разговариваете. Я нифига не понял, что за случаи?
Если Вы говорите про свой пример, приведенный ранее, и мой, то мой отличается от Вашего лишь двумя строчками. При этом, все квалификаторы const остались на месте.
А если уж, Ваш компилятор, при этом, разложил переменные в разные (!!!) области, то сами и думайте, что Вы там нарукаблудили.
Сообщение от NewWriter
|
в обоих случаях во флеше находятся эти самые массивы констант.
|
Вы что, издеваетесь? А откуда литералы возьмутся в программе - их что, святым духом надует после отключения от программатора.
А вообще то, советую вспомнить, с чего начался спор:
Сообщение от NewWriter
|
const char *buffer - это указатель на константный буфер, который неизменно находится во флеше (ну раз он константа)
|
Сообщение от NewWriter
|
А const завсегда означал неизменяемую константу
|
Сообщение от OldDriver
|
const, в данном контексте, никакого отношения к месту расположению не имеет.
|
Вам и было показано, что Вашу "неизменяемую константу" вполне себе можно изменить, и квалификатор const, совсем необязательно указывает только на флеш.
Я не понимаю, что еще нужно доказывать, когда уже все разжевано.
|
|
|
|
25.06.2019, 00:12
|
|
Заблокирован
Регистрация: 07.09.2014
Адрес: В Кремле!
Сообщений: 4,486
Сказал спасибо: 396
Сказали Спасибо 2,220 раз(а) в 1,319 сообщении(ях)
|
Re: Изучаем STM32 Cortex M3
А вы не рассуждайте. Я же просил - без натурных экспериментов - молчите и молча слушайте ![Улыбка](images/smilies/icon_smile.gif) )
А вот вам еще одна картинка, наглядно показывающая, что и как берется и откуда чего приходит и куда уходит.
Смотрите за стрелочками, вкуривайте до просветления. Не переживайте, всё получится и вы поймете, что там куда движется ![Улыбка](images/smilies/icon_smile.gif) Как только просветлитесь, пойдем дальше, к более сложным материям. Не волнуйтесь.
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 05:16.
|
|