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

 
 
 
Reply to this topicStart new topic
> asm + Cи.
chdm
сообщение Nov 23 2009, 16:12
Сообщение #1





Группа: Участник
Сообщений: 13
Регистрация: 23-10-09
Пользователь №: 53 160



Поскажите пожалуйста где можно прочитать по прекомпилятору и по ф-ции 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 ")"
Go to the top of the page
 
+Quote Post
sigmaN
сообщение Nov 23 2009, 21:15
Сообщение #2


I WANT TO BELIEVE
******

Группа: Свой
Сообщений: 2 617
Регистрация: 9-03-08
Пользователь №: 35 751



Похоже на формат GNU компилятора. Соответственно там и искать smile.gif


--------------------
The truth is out there...
Go to the top of the page
 
+Quote Post
chdm
сообщение Nov 24 2009, 07:42
Сообщение #3





Группа: Участник
Сообщений: 13
Регистрация: 23-10-09
Пользователь №: 53 160



Да, это код написанный под gcc avr. Там он успешно компилится. Я просто загоняю проект в ИАР. Не могли бы подсказать где можно найти описание ИАР прекомпилятора, а точнее применение __asm, чтобы реализовать подобный код. Я пока не нахожу((((

Сообщение отредактировал chdm - Nov 24 2009, 08:00
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Nov 24 2009, 08:21
Сообщение #4


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



Цитата(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(). Мне кажется, это именно она.


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
Rst7
сообщение Nov 24 2009, 08:27
Сообщение #5


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



Для начала стоит заглянуть в раздел Intrinsic Functions в документации, прилагаемой к EWAVR (конкретно - AVR IAR C/C++ Compiler Reference Guide) и прочитать про функции __save_interrupt() и __restore_interrupt().

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


Блин smile.gif))


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 26th May 2024 - 19:44
Рейтинг@Mail.ru


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