Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: отключение анализа inline asm в EW AVR
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > IAR
aiwa
Существующий проект для 6.10 при компиляции в 6.60 выдает ошибку:
asm("label_1: \n");
asm(" SBIS 0x0E, 0x07 \n");
asm(" RJMP label_1 \n");
Error[Og005]: Unknown symbol in inline assembly: "label_1"
Error[Og006]: Error in inline assembly: "Error[54]: Expression can not be forward"

Если возможность отключения анализа inline-инструкций?

Предлагаемый шведами вариант
asm("label_1: \n
" SBIS 0x0E, 0x07 \n
" RJMP label_1 \n");
нежелателен.
KRS
Цитата(aiwa @ Dec 14 2015, 00:55) *
Если возможность отключения анализа inline-инструкций?

дело тут не в анализе, а в метке, нельзя глобальные метки оставлять в инлайн асме!
а каждый asm(".... оператор - отдельный, поэтому jmp между ними не сделать.

aiwa
Цитата(KRS @ Dec 14 2015, 13:56) *
дело тут не в анализе, а в метке, нельзя глобальные метки оставлять в инлайн асме!
а каждый asm(".... оператор - отдельный, поэтому jmp между ними не сделать.

Метка локальная.
Пример взят из совершенно рабочего проекта, компилируемым версией 6.10.1:
asm-инструкции относительных переходов с метками он копипастил напрямую.
А в более поздних решили анализировать, совершенно не озадачивая себя вопросом
совместимости.

Вопрос снят.
demiurg_spb
В gcc тулчейне допустимо для меток следующее:
Код
blablabla%=:

В итоге %= будет заменено уникальной подстановкой, сформированной с участием имени файла и номера строки.
Хотя, если вы не пишете макросы с асмовыми вставками, то это и не особо требуется...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.