cl
26.03.2007, 00:59
Hallo,
ich habe ein Problem mit dem Inline-Assembler vom AVR-GCC 4.0.1. Ohne Optimierung übersetzt läuft alles einwandfrei und der Code funktioniert. Wenn man die Optimierung jedoch einschaltet, dann erzeugt er Unsinn. Ich habe das Problem auf folgendes reduzieren können:
{
uint8_t colcntr8;
uint8_t end8 = 253;
asm volatile(
"cp %0, %1" "\n\t" : : "r" (colcntr8), "r" (end8) );
}
Der AVR-GCC erzeugt (Target-MCU ATmega128) ohne Optimierung:
cp r25, r24
Mit Optimierung erzeugt er jedoch:
cp r24, r24
Also für meine Zwecke nicht so sinnvoll.
Was kann/soll ich tun, damit der Code auch mit Optimierung sinnvoll ist?
Danke im Voraus
- cl
ich habe ein Problem mit dem Inline-Assembler vom AVR-GCC 4.0.1. Ohne Optimierung übersetzt läuft alles einwandfrei und der Code funktioniert. Wenn man die Optimierung jedoch einschaltet, dann erzeugt er Unsinn. Ich habe das Problem auf folgendes reduzieren können:
{
uint8_t colcntr8;
uint8_t end8 = 253;
asm volatile(
"cp %0, %1" "\n\t" : : "r" (colcntr8), "r" (end8) );
}
Der AVR-GCC erzeugt (Target-MCU ATmega128) ohne Optimierung:
cp r25, r24
Mit Optimierung erzeugt er jedoch:
cp r24, r24
Also für meine Zwecke nicht so sinnvoll.
Was kann/soll ich tun, damit der Code auch mit Optimierung sinnvoll ist?
Danke im Voraus
- cl