Zonk schrieb:
> Irgend einen schönen GCC oder so? Ich sehe es nicht wirklich ein, für
> mein Miniprojektchen einen 4stelligen Betrag hinzublättern.
Tja, unter der Haube handelt es sich ja sogar um einen GCC, nur das
Microchip das nicht so ganz wahrhaben will und "seinen" Compiler für
viel Geld unter die Leute bringt, sofern denn alle Optimierungen möglich
sein sollen. Daher gibt es auch "Medizin". Microchip muss zwar dank GPL
den Source-Code rausrücken, weigert sich aber seit Jahren deren
XCxy-Compiler wirklich frei verfügbar zu machen. D.h. sie liefern den
Quelltext aber keine Build-Tools, geschweige denn Binaries. Für mich
persönlich ist so ein Verhalten komplett indiskutabel, weshalb ich deren
Produkte meide wie der Teufel das Weihwasser.
neuer PIC Freund schrieb im Beitrag #6082215:
> In der freien Variante sind O0, O1 und O2 freigeschaltet. Das sollte für
> den Hobbyist kein Hindernis sein.
O2 ist meiner Meinung nach meistens das Optimum für einen
Mikrocontroller. Manchmal möchte man jedoch auch mit Os übersetzen, je
nachdem wie knapp man mit dem Flash ist. So wirklich groß sind die
Unterschiede zwischen O2 und Os jedoch nicht, weder was die Größe, noch
was die Geschwindigkeit angeht. Ich frage mich wer von den Leuten hier
wirklich O3 einsetzt und wie da die Ergebnisse bezüglich
Geschwindigkeitszuwachs sind. Ich denke, dass O3 selbst auf dem Desktop
nur selten Sinn macht. Benchmarks von Phoronix haben etwa gezeigt, dass
mit einem GCC mit O3 kompilierte Programme eher gleich schnell und
häufig sogar geringfügig langsamer sind als jene, die mit O2 kompiliert
wurden. Das liegt natürlich mitunter daran, dass sie in jedem Fall
größer sind. Der theoretische Geschwindigkeitszuwachs wird dann durch
den IO-Flaschenhalls zunichte gemacht. Für einen Mikrocontroller dürfte
das sogar noch stärker gelten. Das einzige wo es meiner Meinung nach
Sinn macht, sind extrem zeitkritische Routinen, bei denen man mittels
Compilerdirektive geziehlt die Optimierung für diese eine Funktion auf
O3 stellt. Das bringt aber nur dann etwas, wenn der auf den Code auch
entsprechend schnell zugegriffen werden kann, d.h. man sollte den dann
aus dem RAM ausführen. Dann hat man aber wieder das Problem der
Buskollision, wenn Code und Daten gleichzeitig aus dem RAM gelesen bzw.
ins RAM geschrieben werden sollen, d.h. das ganze macht nur mit TCM bzw.
CCM Sinn.