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

 
 
 
Reply to this topicStart new topic
> отключение анализа inline asm в EW AVR
aiwa
сообщение Dec 13 2015, 21:55
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 301
Регистрация: 13-12-15
Из: Харьков
Пользователь №: 89 682



Существующий проект для 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");
нежелателен.
Go to the top of the page
 
+Quote Post
KRS
сообщение Dec 14 2015, 11:56
Сообщение #2


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



Цитата(aiwa @ Dec 14 2015, 00:55) *
Если возможность отключения анализа inline-инструкций?

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

Go to the top of the page
 
+Quote Post
aiwa
сообщение Dec 14 2015, 13:43
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 301
Регистрация: 13-12-15
Из: Харьков
Пользователь №: 89 682



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

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

Вопрос снят.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Dec 14 2015, 15:38
Сообщение #4


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



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

В итоге %= будет заменено уникальной подстановкой, сформированной с участием имени файла и номера строки.
Хотя, если вы не пишете макросы с асмовыми вставками, то это и не особо требуется...


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 19th July 2025 - 16:38
Рейтинг@Mail.ru


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