Ассембрерные вставки в Си (Keil)
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено Tow 17 августа 2004 г. 17:35

Возникла необходимость использовать асм-вставки в си-шный код. Начал учиться как это делать и вот столкнулся с проблемой передачи параметров. Подскажите как её побороть.


Есть Си-шная функция с использованием асм-вставки:

unsigned int Increment(unsigned int value)
{
#pragma asm

MOV A,R7
ADD A,#01H
MOV R7,A
CLR A
ADDC A,R6
MOV R6,A

#pragma endasm
}

Вот что мы видим в SRC-файле.....

_Increment:
MOV value?040,R6 /* line #1 */
MOV value?040+01H,R7 /* lien #2 */

MOV A,R7
ADD A,#01H
MOV R7,A
CLR A
ADDC A,R6
MOV R6,A

RET

Получили РАБОТАЮЩИЙ кусок кода.
Вопрос: почему возникают стороки /* line #1 */ и /* line #2 */....
и "вываливаются" варнинги

INC.C(15): warning C173: missing return-expression
INC.C(3): warning C280: 'value': unreferenced local variable

что мол функция ничего не возвращает и переменная value не используется. Как объяснить Си что бы он
1) не делал лишних строк /* line #1 */ и /* line #2 */
2) понимал что функция результат всё таки возвращает.

Может у кого есть кусок кода киньте на мыло.
Заранее спасибо.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru