これはこれに対するフォローアップの質問です。__AVR_HAVE_LPMX__
を使用してプロセッサ(avr25)のコードを書いています
- GNU C (WinAVR 20100110) バージョン 4.3.3 (avr) / GNU C バージョン 3.4.5 (mingw-vista special r3)、GMP バージョン 4.2.3、MPFR バージョン 2.4.1 でコンパイル。
lpm rd, Z
インライン アセンブリで使用すると、コンパイラは常にこれを次のように変換しlpm rd,Z+
ます (lss ファイルからの抜粋):
asm volatile("lpm r24,Z");
248: 84 91 lpm r24, Z+
ルックアップテーブルへの連続アクセスで使用される場合、これは悪いことです。ルックアップ値は である可能性が0xff
あるため、これは不必要にZH
( ) を増やし、このソリューションr31
を破損させます。
この動作を回避するための提案はありますか?