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

 
 
 
Reply to this topicStart new topic
> WinAVR + asm, Многострочные asm вставки. как?
Labinskiy Nikola...
сообщение Aug 25 2006, 17:15
Сообщение #1


Участник
*

Группа: Новичок
Сообщений: 27
Регистрация: 5-07-06
Из: Украина, Донецк
Пользователь №: 18 606



Как можно вставить в исходник на Си asm вставку в несколько строк?
Получилось только по одной команде в стиле asm ("nop"), а мне нужно написать целый цикл опроса датчиков, по одной команде оч некрасиво и неудобно, как сделать?


--------------------
If you can't make it good - don't make it look good ;)
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Aug 25 2006, 17:40
Сообщение #2


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

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



В докуменации на avr-libc есть достаточно подробное описние.
Правда юниксовый формат асма не очень удобен.


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
_Diman_
сообщение Aug 25 2006, 20:26
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 92
Регистрация: 8-03-05
Пользователь №: 3 160



В книге Шпак Ю.А. Программирование на языке С для AVR и PIC микроконтроллеров. МК-Пресс, Киев, 2006 есть перевод этой главы. А книжка есть на http://lord-n.narod.ru/walla.html.
Go to the top of the page
 
+Quote Post
Labinskiy Nikola...
сообщение Aug 26 2006, 06:58
Сообщение #4


Участник
*

Группа: Новичок
Сообщений: 27
Регистрация: 5-07-06
Из: Украина, Донецк
Пользователь №: 18 606



Спасибо за ссылки.

Еще два вопросика:
1 - нужно ли восстанавливать "попорченные" регистры при выходе из asm вставки или компилятор сам за этим следит
2 - а можно ли написать нужный мне кусок кода на asm'e отдельно, в другом файле, а потом при компиляции файлы слинковать и юзать extern объявление в Си?


--------------------
If you can't make it good - don't make it look good ;)
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Aug 26 2006, 07:38
Сообщение #5


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

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



1.Тут надо смотреть, чтобы не зацепить регистры уже используемые компилятором. В доке есть описание, какие и как используються.
Поэому наиболее безопасно пойти путем (2).
Как компромис можно сделать функии с С вызовом и ассемблерным телом
Код
int foo(char)
{
asm{.......}
}

Тогда работу со стеком берет на себя компилятор, а логику работы программист.
Впрочем напоследок скажу - gcc оптимизирует достаточно хорошо, и ввязываться в изыски с асмом особой надобности нет. Напишите функцию на С, скомпилируйте и просмотрите листинг - в 90% случаев выкинуть оттуда будет нечего.


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
Labinskiy Nikola...
сообщение Aug 26 2006, 08:51
Сообщение #6


Участник
*

Группа: Новичок
Сообщений: 27
Регистрация: 5-07-06
Из: Украина, Донецк
Пользователь №: 18 606



Цитата
в 90% случаев выкинуть оттуда будет нечего.

Начнем хотябы с этого:
Цитата
Bitwise operations in Standard C will automatically promote their operands to an int, which is (by default) 16 bits in avr-gcc.

и зачем мне 16 битная логика когда мне и 8и с головой хватает?...

Сообщение отредактировал Labinskiy Nikolay - Aug 26 2006, 08:52


--------------------
If you can't make it good - don't make it look good ;)
Go to the top of the page
 
+Quote Post
beer_warrior
сообщение Aug 26 2006, 13:33
Сообщение #7


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

Группа: Свой
Сообщений: 1 065
Регистрация: 8-10-05
Из: Kiev, UA
Пользователь №: 9 380



Скомпилируйте и посмотрите.Стазу отпадет масса вопросов.

Вдогонку:

Bitwise operations in Standard C will automatically promote their operands to an int, which is (by default) 16 bits in avr-gcc.

Use (u)intN_t if you need exactly N bits.

Since these typedefs are mandated by the C99 standard, they are preferred over rolling your own typedefs.

Note:
If avr-gcc's -mint8 option is used, no 32-bit types will be available for all versions of GCC below 3.5.

Сообщение отредактировал beer_warrior - Aug 26 2006, 13:36


--------------------
Вони шукають те, чого нема,
Щоб довести, що його не існує.
Go to the top of the page
 
+Quote Post
Labinskiy Nikola...
сообщение Aug 26 2006, 13:42
Сообщение #8


Участник
*

Группа: Новичок
Сообщений: 27
Регистрация: 5-07-06
Из: Украина, Донецк
Пользователь №: 18 606



Спасибо, не знал


--------------------
If you can't make it good - don't make it look good ;)
Go to the top of the page
 
+Quote Post

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

 


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


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