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


von Benedikt (Gast)


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.

von Fritz G. (fritzg)


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,

von peter dannegger (Gast)


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

von Benedikt (Gast)


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.

von Benedikt (Gast)


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

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
Noch kein Account? Hier anmelden.