List File bei AVR-GCC/WIN AVR

Gast #496413
Lesenswert?

Hallo,

ich nutze WINAVR zusammen mit der aktuellen Version des AVR Studios.
(hab bisher ausschließlich in Assembler prog.)
Um zu sehen, was der Compiler so treibt, wollte ich mir das Listfile mit 
den Assembler-Befehlen ansehen.
Über den Umweg Hexfile -> disassemblieren funktionierts.
Obwohl "Listfile Create" in der Optionen angekreuzt ist, erzeugt er 
keins
(müsste ja unter Order "Others" erscheinen.
Hab ich da noch einen Denkfehler, und "Create List " bedeutet überhaupt 
nicht, dass er ein File mit den Assemblerbefehlen erzeugt oder müssen 
noch andere Optionen eingestellt werden?
Eine kleine Frage noch:
Habe mal mit was ganz einfachem begonnen: LED an Portpin einschalten
In Assembler ein Zweizeiler. Im AVR GCC nach Compilieren an die 100 
Byte.
Entsetzen nach Ansicht des Assembler-Files, was da an Bytes völlig 
sinnloserweise zwischen SRAM, Registern und Stack hin- und 
hergeschaufelt wird. Optimierung ist eingeschalten, müssten da die 
ganzen sinnlosen loads und stores nicht rausfallen?
Bedeutet das im Umkehrschluss, dass man die ganzen Tiny-AVRs mit wenig 
Programmspeicher mit C praktisch nicht bearbeiten kann, da schon bei 
kleineren Programmen der Flash voll ist?

Welche Erfahrungen habt ihr damit?
#496426
Lesenswert?

André wrote:
> Hallo,
>
> Eine kleine Frage noch:
> Habe mal mit was ganz einfachem begonnen: LED an Portpin einschalten
> In Assembler ein Zweizeiler. Im AVR GCC nach Compilieren an die 100
> Byte.
> Entsetzen nach Ansicht des Assembler-Files, was da an Bytes völlig
> sinnloserweise zwischen SRAM, Registern und Stack hin- und
> hergeschaufelt wird. Optimierung ist eingeschalten, müssten da die
> ganzen sinnlosen loads und stores nicht rausfallen?

Was du siehst, ist die Startup Sequenz eines C-Programmes.
Da muss schon ein bischen was hergerichtet werden.
Für dein konkretes Beispiel ist das zugegebenermassen sinnlos,
aber im allgemeinen Fall ist ein Programm ja ein bischen
komplexer als einfach nur eine LED einschalten. Von den 100
Bytes sind 90 oder 95 Bytes als konstant anzusehen. D.h. die
werden nicht mehr, wenn dein Programm größer wird.
Gast #496434
Lesenswert?

Ich hab mich vor ein paar Wochen mal auf WinAVR eingelassen, man wird ja 
älter ;-)
Und ich muss sagen, ich war sehr positiv überrascht. Installation 
problemlos, Hello World (blinkende LED) war auch ohne Krampf fix auf dem 
AVR. Und der erzeugte Asemblercode ist, soweit ich das bisher 
gesehen/überflogen habe, recht kompakt, da kann nur an wenigen Stellen 
noch grossartig optimiert werden.
Ich hab zu Übungszwecken mal ein grösseres Program von ASM in C 
konvertiert. In ASM waren es ca. 7 KB (incl. 700 Byte Textkonstanten, 
115kB Quelltext). In C ist es ca. 9kB (56kB Quelltext), naja, leicht 
verrissen, es passt nicht mehr in den 8515, aber dennoch ist der 
Overhead zum ASM recht gering. Nur dass die C Version WESENTLICH 
einfacher/angenehmer zu lesen ist (nein, auch die Assemblerversion ist 
schon ganz brauchbar strukturiert, aber ASM ist nunmal ASM).

MFG
Falk
Gast #496440
Lesenswert?

Das List-File ist weder im Default_Ordner noch direkt im Projekt-Baum, 
wird scheinbar nicht generiert, obwohl "Create.." angewählt.
Das map-File erscheint im Other Files Ordner.
Hmmm, Ratlosigkeit...

@Karl Heinz:
Dachte ich mir schon fast, nahm aber an, dass die Optimierung das 
"wegoptimiert", hatte mich deshalb etwas gewundert.
Ich glaube, wenn man was in C macht, darf man sich über bestimmte Dinge 
am Anfang nicht so Gedanken machen.
Gast #496444
Lesenswert?

@André

>Das List-File ist weder im Default_Ordner noch direkt im Projekt-Baum,
>wird scheinbar nicht generiert, obwohl "Create.." angewählt.
>Das map-File erscheint im Other Files Ordner.
>Hmmm, Ratlosigkeit...

Hast du im normalen Datei-Explorer nachgeschaut oder im AVR-Studio?
Schau auf deiner Festplatte nach.

>Ich glaube, wenn man was in C macht, darf man sich über bestimmte Dinge
>am Anfang nicht so Gedanken machen.

Ohhhh, wenn das mal kein Irrtum ist.

MfG
Falk

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren