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) :);
これは AVR atmega (8 ビット) プロセッサ用です。GCC 4.3.2 の使用