roboforum.ru

Технический форум по робототехнике.

Использование регистров в асм-вставках в Си (CVAVR)

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Использование регистров в асм-вставках в Си (CVAVR)

Сообщение HarryStar » 20 сен 2011, 12:41

Нужно сделать ассемблерную вставку в код Си
и там используются 2 регистра, в частности R16 и R0. Можно как то объявить компилятору чтоб он их не использовал?

В описании компилятора подобных директив не нашел :(
Аватара пользователя
HarryStar
 
Сообщения: 995
Зарегистрирован: 15 ноя 2010, 13:56
Откуда: Нижний Новгород
прог. языки: С, С++, РНР

Re: Использование регистров в асм-вставках в Си (CVAVR)

Сообщение Dmitry__ » 20 сен 2011, 15:14

в асме сохрани эти регистры в стеке, а перед выходом из асм-вставки восстанови их.
Аватара пользователя
Dmitry__
 
Сообщения: 8033
Зарегистрирован: 13 янв 2011, 15:25
Откуда: Санкт-Петербург

Re: Использование регистров в асм-вставках в Си (CVAVR)

Сообщение Michael_K » 20 сен 2011, 15:25

Компилятор какой?
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Использование регистров в асм-вставках в Си (CVAVR)

Сообщение HarryStar » 20 сен 2011, 15:33

CodeVision AVR, я же написал в теме

Видел в других компиляторах надпись типа
register unsigned char b1 @16;

Т.е. назначают переменной регистр - соотв. компилятор его не использует. В CVAVR как такое сделать?
Аватара пользователя
HarryStar
 
Сообщения: 995
Зарегистрирован: 15 ноя 2010, 13:56
Откуда: Нижний Новгород
прог. языки: С, С++, РНР

Re: Использование регистров в асм-вставках в Си (CVAVR)

Сообщение Michael_K » 20 сен 2011, 15:39

Ой, сорри, просмотрел... CVAVR не знаю.

Нужно искать в тугоментации соглашение об использовании регистров
(библиотеки ведь как-то должны же писать для него).
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб

Re: Использование регистров в асм-вставках в Си (CVAVR)

Сообщение HarryStar » 20 сен 2011, 15:40

А, я понял, туплю
Тут тоже также, просто номера регистров не такие. я для регистра R16 писал
register unsigned char b1 @16;

А это соответствует регистру R2, который компилятор не разрешал трогать, поэтому и выдавал ошибку.
Регистр R16 это @30 я правильно понимаю?
Аватара пользователя
HarryStar
 
Сообщения: 995
Зарегистрирован: 15 ноя 2010, 13:56
Откуда: Нижний Новгород
прог. языки: С, С++, РНР

Re: Использование регистров в асм-вставках в Си (CVAVR)

Сообщение Michael_K » 20 сен 2011, 15:59

Вот уж не знаю. В GCC регистры называются своими собственными именами :)
Аватара пользователя
Michael_K
 
Сообщения: 6028
Зарегистрирован: 07 окт 2009, 00:29
Откуда: СПб


Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 18