Пробую сделать ассемблерную вставку, но он не компилируется.
Такой код:
void main()
{
unsigned char x = 200;
asm("mov r7,%[value]"
:
: [value] "I" (x)
);
}
Сообщение об ошибке:
test.c: In function ‘main’:
test.c:5: warning: return type of ‘main’ is not ‘int’
test.c:9: warning: asm operand 0 probably doesn’t match constraints
test.c:9: error: impossible constraint in ‘asm’
make: *** [bin] Error 1
Компилирую под thumb1 вот такой командой:
arm-elf-gcc -mcpu=arm7tdmi -mthumb -O0 -msoft-float -I/usr/arm-elf/include -c test.c
Версия gcc : arm-elf-gcc (GCC) 4.3.2
Список ограничений для inline assembler взял здесь http://www.ethernut.de/en/documents/arm-inline-asm.html, там есть таблица с перечислением всех возможных ограничителей на операнды.
Прошу подсказать что не так