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

 
 
> Глобальные переменные CVAVR, В регистрах
Exstreem
сообщение Jul 10 2010, 16:52
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 25
Регистрация: 5-02-09
Пользователь №: 44 428



Использую CVAVR 1.25.9
В инструкции написано, что глобальные переменные располагаются в регистрах 2-14, локальные - с 16.
Можно ли как-то глобальную переменную разместить в регистрах более 16?
Связано с тем, что много фукнкций написано на асме. Если их объявить в функции, то к ним не обратиться (в асме) по имени, а регистр будет меняться при разных компиляциях (при добавлении переменых и т.д.). Если объявить как глобальную, то не работают операции ldi, ld, st и т.д. (регистры менее 15). А делать push-pop - не всегда целесообразно, да и тратить системное время не хочется.
Придумал такой вариант:
Код
#asm (".def Per=R16");

но CVAVR в этом случае не считает регистр зарезервированным, и поэтому может использован еще раз (!), если объявить локальные переменные средствами компилятора.
Как решена эта проблема в других компиляторах (gcc, IAR)?
Go to the top of the page
 
+Quote Post



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

 


RSS Текстовая версия Сейчас: 21st July 2025 - 05:54
Рейтинг@Mail.ru


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