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