Оптимизация такая оптимизация


Картинко даже пояснения не требует. Кто-нибудь знает почему так? вижу такое в первый раз за год работы с AVR. Путем выноса отдельных участков кода выяснил, что по 3 кб жрут _delay_ms(). Но раньше такого никогда не было(с такой оптимизацией). И да, Build succeeded with 0 warnings если что)
- +1
- 09 августа 2011, 23:14
- enq
Так компилируется _delay_ms, когда параметр задержки неизвестен на этапе компиляции.
Сделайте функцию, скажем, beep250, и вызывайте в ней _delay_ms(250) — код сразу станет меньше, т.к. компилятор оптимизирует функцию _delay_ms под конкретную задержку.
Сделайте функцию, скажем, beep250, и вызывайте в ней _delay_ms(250) — код сразу станет меньше, т.к. компилятор оптимизирует функцию _delay_ms под конкретную задержку.
Вот ответ. При неизвестном на этапе компиляции значении задержки (и/или отключенной оптимизации) невозможно оптимизировать функцию _delay_ms, построенную на использовании чисел с плавающей запятой. Поэтому в код пихаются функции для этой запятой, а они немаленькие. Посмотрите, в файле delay.h есть соответствующее предупреждение.
Комментарии (21)
RSS свернуть / развернуть