Мне нужно загрузить 18h и вывести его на порт 60h, следуя работам (внутри asm ("")).
ldi r1, 0x18 ; 0x18 -> r1
sts 0x60, r1 ; output r1 -> 0x60
Мне все равно, используется ли для этого регистр r1 или любой другой. Есть ли простой способ позволить компилятору решать, какой регистр использовать?
Я мог бы использовать внешнюю переменную r / w, но это создает некоторые ненужные издержки:
register uint8_t tmp;
asm volatile (
"ldi %[tmp], 0x18 \n\t"
"sts 0x60, %[tmp]"
: [tmp] "=r"(tmp) :);
это для 8-битного процессора AVR atmega. Использование GCC 4.3.2