Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Микроконтроллеры, АЦП, память и т.д Темы касающиеся микроконтроллеров разных производителей, памяти, АЦП/ЦАП, периферийных модулей...

 
Опции темы
Непрочитано 28.02.2018, 01:00  
STM32F0
Заблокирован
 
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
STM32F0 на пути к лучшему
По умолчанию Re: Оптимизация в AVR GCC

Сообщение от xlr8 Посмотреть сообщение
в моем понимании с..ка, оптимизированная и не оптимизированная программы должны иметь один исход
Вы не видите противоречия в своих словах? Жаль!
Реклама:
STM32F0 вне форума  
Непрочитано 28.02.2018, 03:04  
xlr8
Частый гость
 
Регистрация: 29.02.2008
Сообщений: 10
Сказал спасибо: 1
Сказали Спасибо 1 раз в 1 сообщении
xlr8 на пути к лучшему
По умолчанию Re: Оптимизация в AVR GCC

Увы, в контексте предшествующих обсуждений - не вижу. Исход (не код) один, пути - разные. Яркий пример тому, рассмотренный в начале PORTx |= (1‹‹y) (почему-то упорно обрезаются 3и последних символа этого выражения).

Не хочу вдаваться в споры, не считаю себя компетентным специалистом в данной области, просто пока не могу нащупать твердую логическую закономерность в действиях компилятора в приведенном мной куске, видимо еще не созрел.

Последний раз редактировалось xlr8; 28.02.2018 в 03:09.
xlr8 вне форума  
Непрочитано 28.02.2018, 07:19  
CERGEI1982
Почётный гражданин KAZUS.RU
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию Re: Оптимизация в AVR GCC

Это как удалить у себя на компе винду и установив дос, работать в дос. Оптимизируя быстроту выполнения команд
__________________
Глаза боятся,а руки делают.
CERGEI1982 вне форума  
Непрочитано 02.03.2018, 02:15  
Someone
Гражданин KAZUS.RU
 
Регистрация: 16.06.2005
Сообщений: 943
Сказал спасибо: 25
Сказали Спасибо 174 раз(а) в 123 сообщении(ях)
Someone на пути к лучшему
По умолчанию Re: Оптимизация в AVR GCC

Сообщение от xlr8 Посмотреть сообщение
без пошаговой отладки, а она адекватна только при выключенной оптимизации.
Глупости. Пример "неадекватности" приведите пожалуйста. А то у меня почему-то никогда проблем с пошаговой отладкой не возникало ни в одной из версий студии, начиная с 4.18. Оптимизация всегда стоит Os. И ничего "неадекватного" я не видел.
Someone вне форума  
Непрочитано 02.03.2018, 02:27  
Someone
Гражданин KAZUS.RU
 
Регистрация: 16.06.2005
Сообщений: 943
Сказал спасибо: 25
Сказали Спасибо 174 раз(а) в 123 сообщении(ях)
Someone на пути к лучшему
По умолчанию Re: Оптимизация в AVR GCC

Сообщение от xlr8 Посмотреть сообщение
и волатию все
Зря. Можно поиметь проблемы. Volatile надо использовать с умом, только там, где это действительно необходимо.
Someone вне форума  
Непрочитано 02.03.2018, 12:38  
Bill
Гражданин KAZUS.RU
 
Регистрация: 02.06.2003
Адрес: Челябинск
Сообщений: 545
Сказал спасибо: 10
Сказали Спасибо 339 раз(а) в 202 сообщении(ях)
Bill на пути к лучшему
По умолчанию Re: Оптимизация в AVR GCC

Сообщение от xlr8 Посмотреть сообщение
Короче теперь я напуган до смерти и волатию все, что движется, а если не движется, шевелю и волатилю... ацтой.
Ну, как говорится, у страха глаза велики. Пугаться тут нечего. Главное понять что зачем почему и отчего.
Магическое слово volatile говорит компилятору, что значение переменной с таким квалификатором может изменяться независимо от программы, например в прерываниях. Маленький пример:
Код:
char flag;
..........
     while (!flag);     // Wait for the event
В данном случае переменная внутри цикла никак не меняется. Поэтому при включенной оптимизации (компилятор стремится сделать как можно более эффективный код) копирование переменой flag в регистр процессора выносится за пределы цикла. Это будет выглядеть примерно так:
Код:
        lds   r16, flag
loop:   tst   r16
        breq  loop
Т.е. программа попросту "подвисает".
Если же объявить переменную flag с квалификатором volatile, т.е.
Код:
volatile char flag;
.......
      while (!flag);     // Wait for the event
то будет примерно такой код
Код:
loop:  lds   r16, flag
       tst   r16
       breq  loop
Т.е. компилятор "знает",что переменная может изменится в течение цикла. Поэтому содержимое переменной flag каждый раз копируется в регистр для анализа ее содержимого, и зацикливания не происходит.
С другой стороны, если в цикле происходит вызов какой-либо функции, которая может изменить данную переменную, то компилятор также будет копировать значение этой переменной во время цикла.

Последний раз редактировалось Bill; 02.03.2018 в 14:18.
Bill вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Оптимизация программы - бортовой компьютер на PIC16F73 Hellka Микроконтроллеры, АЦП, память и т.д 6 06.09.2010 17:04
gcc, iar, code vision AVR ? schotki Микроконтроллеры, АЦП, память и т.д 48 26.05.2009 20:15
AVR+GCC+jacOS DenisLeonidovich Микроконтроллеры, АЦП, память и т.д 3 24.07.2007 14:24
GCC AVR не работает printf("Hello word") Kabron Proteus, KiCAD и другие ECAD 8 03.03.2007 14:33
GNU GCC AVR вопрос по переменным.. Mozart Микроконтроллеры, АЦП, память и т.д 3 09.02.2007 20:00


Часовой пояс GMT +4, время: 21:25.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot