Что за ошибка в программе?
Немогу понять почему появляется ошибка: "Relative branch out of reach". Компилятор начал ругаться когда я добавил в программе несколько подпрограмм(даже если они пустые) на brne, breq?
- Реклама
Странно, у меня обычно ругается на Call, если вызываемая подпрограмма далеко..ну это в прочем объяснимо, а тут...
тоже ограничение в 63 строки, наверно
Тоже жду ответа от ассов
тоже ограничение в 63 строки, наверно
Тоже жду ответа от ассов
Команды условных переходов имеют "дальность стрельбы" от -64 до +63. У Вас расстояние до метки больше, поэтому ассемблер и ругается. В таких случаях я командой условного перехода обхожу команду RJMP, нацеленную на дальнюю метку. В случаях жёсткой экономии времени процессора приходится перегруппировывать подпрограммы, чтобы условный переход мог дотянуться до нужного места.
А тогда call, может вызвать что-то не ниже чем 64 строки и не выше себя?
- Реклама
зачем в компилятор добавлять АСМ инструкции ?Tohey писал(а):Немогу понять почему появляется ошибка: "Relative branch out of reach". Компилятор начал ругаться когда я добавил в программе несколько подпрограмм(даже если они пустые) на brne, breq?
Потому, что вся программа пишется на асме123avr писал(а): зачем в компилятор добавлять АСМ инструкции ?
Действительно зачем? Ребята, уважайте друг друга, читайте внимательней:
Tohey писал(а):Компилятор начал ругаться когда я добавил в программе несколько подпрограмм(даже если они пустые) на brne, breq?
Память очень интересная штука: бывает так, что запомнишь одно, а вспомнишь другое...
Аааа,!! Все, понял!!Спасибо!Nanobyte писал(а):Нет, у RCALL и RJMP дальность действия составляет от -2047 до +2047.
И не строк, а команд (слов по 2 байта).
- Сообщения: 568
- Зарегистрирован: Ср янв 10, 2007 19:15:51


