Gast
#709097
Hallo,
ich verzweifel gerade ein wenig, weil der AVRGCC sehr komischen Code
erzeugt.
Ich habe folgende whileschleife:
while(os_getMapEntry(ptr) == 0x0D){;}
Dies erzeugt folgenden Code:
1208: while(os_getMapEntry(ptr) == 0x0D);
+00000786: 308D CPI R24,0x0D Compare with immediate
+00000787: F409 BRNE PC+0x02 Branch if not equal
+00000788: CFFF RJMP PC-0x0000 Relative jump
+00000789: CFFF RJMP PC-0x0000 Relative jump
+0000078A: 9508 RET Subroutine return
In R24 steht der Wert der Rückgabe von os_getMapAntry(ptr), das hat er
vorher schon erfolgreich ausgeführt.
Aber unabhängig von der Erfüllung der Bedingung im while, endet er immer
in einer Endlosschleife.
Dieses Phänomen habe ich noch bei ein paar anderen IFs und whiles. Hat
jemand eine Erklärung warum der avrgcc mit -O1 dies macht?
Schönen Abend