mikrocontroller.net

Forum: Compiler & IDEs AvrGCC erzeugt RJMP PC-0x0000


Autor: asdbla (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Andreas K. (a-k)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie sieht der Rest des Quellcodes aus? Von der Funktion in der diese 
Zeile drinsteht.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du alle Warnungen eingeschaltet?  Vielleicht erzählt er dir ja
dabei was von wegen "Comparison is always true due to ...".

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.