Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: asm + Cи.
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > Программирование
chdm
Поскажите пожалуйста где можно прочитать по прекомпилятору и по ф-ции asm. А то у меня IAR компилятор ругается на строчку в коде
__asm__ __volatile__ ( "in %0,__SREG__ \n andi %0,lo8(128)": "=g"(value)smile.gif;

Делаю __asm( "in %0,__SREG__ \n andi %0,lo8(128)": "=g"(value)smile.gif; - тоже пишет:
Error[Pe018]: expected a ")"
sigmaN
Похоже на формат GNU компилятора. Соответственно там и искать smile.gif
chdm
Да, это код написанный под gcc avr. Там он успешно компилится. Я просто загоняю проект в ИАР. Не могли бы подсказать где можно найти описание ИАР прекомпилятора, а точнее применение __asm, чтобы реализовать подобный код. Я пока не нахожу((((
Сергей Борщ
Цитата(chdm @ Nov 24 2009, 09:42) *
Не могли бы подсказать где можно найти описание ИАР прекомпилятора,
Этим занимается не прекомпилятор (вы, наверное, имели ввиду препроцессор), а компилятор. Help->C/C++Compiler reference, там искать слово asm.
Цитата(chdm @ Nov 24 2009, 09:42) *
а точнее применение __asm, чтобы реализовать подобный код.
Это невозможно. Возможности ИАРовского инлайн-ассемблера просто убоги, о чем они сами же и пишут в документации. Ваша асм-вставка может быть записана просто как
Код
value = SREG & (1<<SREG_I);
Добавлено: А еще почитайте в том же документе описание intrinsic-функций (прямо ищите слово intrinsic), в частности __save_interrupt(). Мне кажется, это именно она.
Rst7
Для начала стоит заглянуть в раздел Intrinsic Functions в документации, прилагаемой к EWAVR (конкретно - AVR IAR C/C++ Compiler Reference Guide) и прочитать про функции __save_interrupt() и __restore_interrupt().

Цитата
Добавлено:


Блин smile.gif))
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.