mikrocontroller.net

Forum: Compiler & IDEs WinAVR-20060125: Code wird schon wieder größer...


Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann es sein, dass der Compiler schon wieder schlechter wurde ?

Ein Programm hat sich von rund 3500 auf 3800Bytes vergrößert, nachdem
ich die neue Version installiert habe.
Interessant finde ich folgendes:
a) ypos=Zeile*8;
b) ypos=Zeile;
   ypos*=8;

Version b erzeugt einen um 16Bytes kleineren Code, da u.a. bei B mul
verwendet wird, während a 16bit shifts verwendet.

Autor: Fritz Ganter (fritzg)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann sein dass er mehr auf Speed optimiert. Typisch ist z.B. das
ausrollen von Schleifen, die machen den Code um einiges größer aber
auch schneller,

Autor: peter dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich kann das überhaupt nicht bestätigen.

Ich habe jetzt mal 4 ältere Programme compiliert (-Os):

WINAVR            20030913  20050214  20060125

Programm 1        2911      2935      2907

Programm 2        2376      2390      2380

Programm 3        2075      2089      2069

Programm 4         571       571       569

Vergleich:          100%     100,7%    99,9%


Also nur das 2. Programm ist mit der 2003 Version um 2 Worte kleiner.

In % sind die Unterschiede schlichtweg lächerlich, um so ein Gedöns
drum zu machen.


Peter

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe mit 2, also auf Geschwindigkeit optimiert, compiled.
Da wird dann aus x*zahl ein schift, wenn die Zahl 2^n ist, obwohl ein
mul schneller und kleiner wäre. Und das ist nur ein Beispiel.
Bei meinem Fall ist das Programm um rund 8% größer geworden, das ist
schon einiges.

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier mal ein Beispiel:
ypos=Zeile*8;

mov r24,r19
clr r25
movw r30,r24
lsl r30
rol r31
lsl r30
rol r31
lsl r30
rol r31

ypos=Zeile;
ypos*=8;

mov r11,r19
ldi r24,lo8(8)
mul r11,r24

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.