コードサイズを小さくするために、avr-gccを使用してグローバル変数を未使用のI / Oレジスタ(PORTBなど)にバインドしたいと思います。私はこのトリックをAVRのアプリケーションノートAVR035(14ページ)で学びました。
アプリケーションノートでは、IARコンパイラを使用して、次のように変数をI/Oレジスタにバインドします。
__no_init volatile uint8_t counter@0x35;
avr-gccを使用すると、次の行を使用して変数を標準レジスタ(この場合はr3)にバインドできます。
register uint8_t counter asm("r3");
ただし、これはI/Oレジスタでは機能しません。I / Oレジスタに対してこれを行う方法はありますか?