Forum: Compiler & IDEs Liste aller(!) AVR-GCC-Optimierungsparameter


von wilson (Gast)


Lesenswert?

Hi,

hat jemand eine Liste aller(!) AVR-GCC-Optimierungsparameter irgendwo 
parat? Ich bastele an einem Tool, welches die Parameter automatisiert 
durchprobiert, um ein möglichst kleines Binary zu erstellen.

In der Doku
https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
fehlen leider mindestens mal -morder2 und -mcall-prologues. 
Wahrscheinlich noch deutlich mehr.

von Dr. Sommer (Gast)


Lesenswert?

Wenn es auch nur 50 Optionen wären (es sind mehr), gibt es ca. 10^15 
Kombinationen. Wenn man optimistisch mit 1x kompilieren = 1 sek rechnet, 
dauert das Durchprobieren ca. 35 Mio. Jahre. Bis dahin gibt es 
Controller, die schnell & groß genug sind um ordinär mit -O2 optimierten 
Code auszuführen. Halt, die gibt's sogar jetzt schon (ARM)...

von Tux (Gast)


Lesenswert?

Meistens ist es leichter einfach den nächst größeren Controller zu 
wenden als um auf Teufelkommraus zu optimieren.

von wilson (Gast)


Lesenswert?

Keiner sprach davon, alle Kombinationen durchzuprobieren! Für jede einen 
Compiliervorgang. Dann alle, die eine Verbesserung brachten, 
kombinieren. Dann ggf. noch einen Durchlauf oder zwei. Hat mir schon 
einiges gebracht.

Bei Dingern wie -funsafe-math-optimizations muss man natürlich ein 
bisschen aufpassen.

von wilson (Gast)


Lesenswert?

Den Controller bei allen Kunden aus- und einen neuen einzulöten ist 
nicht immer wirtschaftlich.

von Max D. (max_d)


Lesenswert?

Wenn das tool vom to jetzt nicht alle drölftausend kombis ausprobiert 
sondern eher was in Richtung Baumsuche macht, dann wird die Zeit ganz 
schnell kleiner (und 1 Sekunde ist ganz schön pessimistisch für ein 
winziges AVR-hex das auf einem flotten & modernen PC gebaut wird.

Ob es natürlich die erhoffte Verbesserung bringt wage ich stark zu 
bezweifeln. Der GCC ist selbst mit den standard-optionen ( -Os )schon 
ziemlich gut. da kriegt man nurnoch ein paar Prozente mehr weg von dem 
executable. Spätestens wenn dann el-cheffe kommt und noch irgendeinen 
firlefanz will ist schluss. Ausserdem ist bei den AVRs der Platz doch 
spottbillig. Wenn du nicht grade die ganze Weltbevölkerung ausstatten 
willst, dann ist deine Arbeitszeit ein paar Größenordnungen teurer als 
das Upgrade.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

wilson schrieb:
> Hi,
>
> hat jemand eine Liste aller(!) AVR-GCC-Optimierungsparameter irgendwo
> parat? Ich bastele an einem Tool, welches die Parameter automatisiert
> durchprobiert, um ein möglichst kleines Binary zu erstellen.
>
> In der Doku
> https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html
> fehlen leider mindestens mal -morder2 und -mcall-prologues.
> Wahrscheinlich noch deutlich mehr.

Das sind nur die Optionen, die für alle Targets verfügbar sind.

Die avr-spezifischen:

http://gcc.gnu.org/onlinedocs/gcc/AVR-Options.html

-morder und einige andere sind da nicht dabei da undokumentiert, also 
auch mit --help=target.  Da hilf dann eine Blick in die Quelle:

http://gcc.gnu.org/viewcvs/gcc/trunk/gcc/config/avr/avr.opt?content-type=text%2Fplain&view=co

-funsigned-char, -funsigned-bitfields und -fshort-enums etc. sind 
übrigens keine Optimierungsoptionen denn sie ändern die Semantik des 
Programms!

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.