Liste aller(!) AVR-GCC-Optimierungsparameter

Gast #3857411
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.
Gast #3857429
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)...
Gast #3857442
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.
#3857451
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.
Persönliche Seite #3857459
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!

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