Tow (17.08.2004 18:11, просмотров: 10888)
Ассемблерные вставки в Си (Keil) Возникла необходимость использовать асм-вставки в си-шный код. Начал учиться как это делать и вот столкнулся с проблемой передачи параметров. Подскажите как её побороть.
Есть Си-шная функция с использованием асм-вставки:
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) понимал что функция результат всё таки возвращает.
Может у кого есть кусок кода киньте на мыло.
Заранее спасибо.