[an error occurred while processing this directive]
Маленькие трюки.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)
миниатюрный аудио-видеорекордер mAVR

Отправлено Bill 10 июля 2002 г. 06:51

Как я недавно обнаружил, IAR C не оптимизирует код в случаях умножения на целый ряд констант. Например, при обработке выражения
char c;
c *= 5;
он тупо генерирует вызов п/п умножения (MCU не имеет аппаратного умножения).
Изменив несколько запись, я получил более оптимальный код
с = с*4 + с; // Здесь вызова п/п умножения уже нет
Можно применять подобный трюк и для других чисел (3, 6, 7, 9, 15, и т.д.). Программа получается менее читабельной (-), но более короткой(+). То же самое можно проверить и на других компиляторах, и для 16-разрядных переменных.
Правда, я сам не проверял, но когда мне приходилось заниматься компилятором ( это несколько громко сказано), то подобную оптимизацию кода я включал. Может быть у кого-то есть другие подобные трюки. Если можно - поделитесь.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru