roboforum.ru

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

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

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

HarryStar » 20 сен 2011, 12:41

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

В описании компилятора подобных директив не нашел :(

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

Dmitry__ » 20 сен 2011, 15:14

в асме сохрани эти регистры в стеке, а перед выходом из асм-вставки восстанови их.

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

Michael_K » 20 сен 2011, 15:25

Компилятор какой?

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

HarryStar » 20 сен 2011, 15:33

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

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

Т.е. назначают переменной регистр - соотв. компилятор его не использует. В CVAVR как такое сделать?

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

Michael_K » 20 сен 2011, 15:39

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

Нужно искать в тугоментации соглашение об использовании регистров
(библиотеки ведь как-то должны же писать для него).

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

HarryStar » 20 сен 2011, 15:40

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

А это соответствует регистру R2, который компилятор не разрешал трогать, поэтому и выдавал ошибку.
Регистр R16 это @30 я правильно понимаю?

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

Michael_K » 20 сен 2011, 15:59

Вот уж не знаю. В GCC регистры называются своими собственными именами :)


Rambler\'s Top100 Mail.ru counter