www.mikrocontroller.net

Forum: Compiler & IDEs Problem mit -mint8


Autor: Stefan (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich bin mir nicht sicher, ob folgendes Problem bei mir liegt oder am
Compiler. Bei "normaler" Einstellung funktioniert alles wunderbar,
bei Compilieren mit -mint8 kommt aber das falsche Ergebnis raus:


prog_char mybits[256] =
  {1,1,1,1,1,1,1,1,  1,1,1,1,1,1,1,1, ....
};

unsigned char bitanz(unsigned char c){
  return(PRG_RDB(&mybits[c]));
}

int main(void){
  char i,b;
  for(;;){
    i = 255;
    b = bitanz(i);
  }
  return(b);
}

Beim normalen Compilieren kommt für Funktion bitanz folgender ASM-Code,
der auch wunderbar funktioniert:
 25c:  99 27         eor  r25, r25
 25e:  8a 5d         subi  r24, 0xDA  ; 218
 260:  9e 4f         sbci  r25, 0xFE  ; 254
 262:  e8 2f         mov  r30, r24
 264:  ff 27         eor  r31, r31
 266:  84 91         lpm  r24, Z
 268:  08 95         ret

Bei Compilieren mit -mint8 kommt folgendes:
 25c:  99 27         eor  r25, r25
 25e:  8a 5d         subi  r24, 0xDA  ; 218
 260:  9e 4f         sbci  r25, 0xFE  ; 254
 262:  e8 2f         mov  r30, r24
 264:  ff 27         eor  r31, r31
 266:  84 91         lpm  r24, Z
 268:  08 95         ret

In 264 wird R31 NULL gesetzt statt der bereits richtig errechnete Wert
aus R25 übernommen!

Sieht irgendwie so aus, als ob -mint8 auch Pointer 8-bittig
zurechtstutzt ?!?

Viele Grüße, Stefan


bdw: das Programm macht wirklich keinen Sinn sondern ist nur zum Test
gedacht ...

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die avr-libc kommt mit -mint8 nicht klar, deshalb sollte man es nicht
verwenden.

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aber die habe ich doch garnicht eingebunden?

Naja, nicht so schlimm, der Code sieht mit "normaler" Compilierung
sowieso besser aus, ich habe es nur mal ausprobiert, um die
Werteübergabe von/zu Funktionen kürzer zu machen. ALlles andere kann
man wohl auch gut mit Typzuweisungen in den Griff kriegen.

Gruß, Stefan

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.