Вопрос строго про AVR Studio
Решил использовать библиотеку операций с 32ух битными числами
там есть такой код
Код: Выделить всё
.def dv32u0 =r16 ; divisor byte 0 (LSB)
.def dv32u1 =r17 ; divisor byte 1
.def dv32u2 =r18 ; divisor byte 2
.def dv32u3 =r19 ; divisor byte 3 (MSB)
.def dres32u0 =r20 ; result byte 0 (LSB)
.def dres32u1 =r21 ; result byte 1
.def dres32u2 =r22 ; result byte 2
ну в общем понятно - назначение регистрам символических имен..
так почему AVR Studio у меня ругается ? :
warning: Registr r16 already definited by the .DEF directiveи так на все регистры которым назначаем символические имена
в чем проблема то ?
в документации нашел следующее:
DEF - Назначить регистру символическое имя
Директива DEF позволяет ссылаться на регистр через некоторое символическое имя. Назначенное имя может использоваться во всей нижеследующей части программы для обращений к данному регистру. Регистр может иметь несколько различных имен. Символическое имя может быть переназначено позднее в программе.
Синтаксис:
.DEF Символическое_имя = Регистр
Пример:
.DEF temp=R16
.DEF ior=R0
.CSEG
═ldi temp,0xf0═ ; Загрузить 0xf0 в регистр temp (R16)
═in ior,0x3f═ ; Прочитать SREG в регистр ior (R0)
═eor temp,ior═ ; Регистры temp и ior складываются по исключающему или
что не так ?
кстати вообще никакие регистры не переопределял в программе.. это первое переопределение (и то из за того что не хочу переписывать стороннюю библиотеку)
в принципе на предупреждения можно и забить - но как то не удобно потом другие варнинги искать в этой куче (у меня обычно программы компилируются без всяких предупреждений)