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
Wie sieht der Rest des Quellcodes aus? Von der Funktion in der diese Zeile drinsteht.
Hast du alle Warnungen eingeschaltet? Vielleicht erzählt er dir ja dabei was von wegen "Comparison is always true due to ...".
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.