Добрый день, всем! Есть один вопрос. Сейчас занимаюсь оптимизацией кода под ATXMEGA128A1, и вот на что я наткнулся. Внешняя память у меня не подключена, все находится внутри. Следовательно регистры RAMPD,RAMPX,RAMPZ,RAMPY у меня всегда равны нулю. Но компилер упорно их все время обнуляет и в фоне, и в прерываниях. При этом для сохранения в прерываниях он использует обычные регистры, которые он перед этим сохраняет, а потом восстанавливает. Т.к. прерываний у меня дофига, хотелось как-то убрать лишние действия. Вопрос, кто-нить делал это? В стартапе я их обнулю, и дальше компилятор забывает об их существовании. У компилятора есть предопределенные символы __HAS_RAMPX__, ..., но отенить их #undef нельзя, к сожалению. Или на винавр переходить, как там дела с этим обстоят?
|