реклама на сайте
подробности

 
 
> Оптимизация CALL/JMP -> RCALL/RJMP в avr-gcc
aesok
сообщение Apr 23 2007, 21:51
Сообщение #1


Знающий
****

Группа: Участник
Сообщений: 596
Регистрация: 26-05-06
Из: Москва
Пользователь №: 17 484



Больше чем год назад в компоновщик (binutils 2.17), был добавлен проход оптимизации результатом работы которого является замена инструкций CALL/JMP на RCALL/RJMP когда это возможно для контроллеров с памятью от 16 до 64KB (про 128/256 не знаю). Также выполняется замена последовательности команд CALL __label__; RET на JMP __label__. Эти оптимизации дает примерно 5%-ное уменьшение размера кода.

Для этого нужно использовать ключ компоновщика "--relax".

Есть еще один ключ, который позволяет использовать инструкции RCALL/RJMP для перехода из старших 4КВ флеш в младшие (и обратно) - "--pmem-wrap-around=<val>", где val - 16k, 32k или 64k (размер флеш контроллера).

Внимание: при использовании "--relax" теряется информация о номерах строк исходной программы и символьная отладка невозможна.

К сожалению, про эту возможность знало очень мало народу. У меня просьба испытайте это на своих проектах, и сообщите о результатах.

Спасибо, Анатолий.

PS: просьба, пожалуйста не посылайте в этот топик сообщения что Ваш купленный/вылеченный компилятор уже давно это делает.
Go to the top of the page
 
+Quote Post

Сообщений в этой теме


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 22:45
Рейтинг@Mail.ru


Страница сгенерированна за 0.01365 секунд с 7
ELECTRONIX ©2004-2016