16+
Понедельник
20 августа
Вход |Карта сайта | |Upload |codebook | PARTS

 О смысле всего сущего 0xFF

 Средства и методы разработки

 Мобильная и беспроводная связь

 Блошиный рынок Объявления

caxapa

Микроконтроллеры ARM 

AVR PIC MSP PLD,FPGA,DSP 

Кибернетика Технологии 

Схемы, платы, компоненты 

Средства и методы разработки

 
   Новая тема Правила Регистрация Поиск »» Архив
Вернуться в конференциюТопик полностью
fk0  (23.01.2018 23:49) , в ответ на Что ни так? автор: Молодой коллега
Условие в цикле (первый if) посчитано в ассемблерном листинге ДО всех операций в for. И сразу принято решение, крутиться в for, или сразу break до for (а чего зазря считать). Компилятор не в курсе же, что run_timer_ms или gradient_table[i][0] у 
тебя на ходу могут поменяться. Он видит, что в функции ты их не меняешь и может делать выводы. И, кстати, следуюший аспект на который ещё наткнёшся -- порядок записи переменных в ячейки из регистров процессора тоже вобщем-то никто не гарантировал. Запросто все твои присваивания в цикле, например, перекинет в конец функции и запишет только финальные значения на выходе из функции (потому, что она сама, функция -- барьер). Вставишь volatile -- будет писать сами volatile в том порядке, а всё остальное -- как придётся. Изучай memory barriers.
[ZX]
Главная | Карта сайта | О проекте | Проекты | Файлообменник | Регистрация | Вебмастер | RSS
Лето 7526 от сотворения мира. При использовании материалов сайта ссылка на caxapу обязательна.
MMI © MMXVIII