这是对此的后续问题。我正在__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
) 从而破坏此解决方案。
有什么建议可以规避这种行为吗?