Forum: Mikrocontroller und Digitale Elektronik Verhalten bei unterschiedlichen Optimierungsstufen


von Alex Dewor (Gast)


Lesenswert?

Hallo zusammen.
Ich soll im Rahmen einer Projektarbeit eine Software in Betrieb nehmen, 
welche Daten mit einem SPI-Slave austauscht (und noch viele andere 
Sachen auch). Die SW ist also nicht von mir geschrieben und meiner 
Meinung nach sehr komplex.
Der Controller ist ein LPC und als Compiler nutze ich den von Keil 
(MDK-ARM). Das komische ist, dass die SW nur ordnungsgemäß läuft, wenn 
ich diese mit -O3 übersetze. Bei der Optimierungsstufe -O0 treten 
"komische Effekte" auf.
Ich weiß meine Beschreibung ist relativ dünn, aber ich wüßte gerne ob 
ihr vielleicht ein paar Tipps habt, wie ich den Fehler eingrenzen kann. 
Ich weiß im Moment gar nicht, welches Ende ich angreifen muss... :-(
Grundsätzlich müsste die SW doch auch mit -O0 laufen... Was ändert sich 
durch unterschiedliche Optimierungsstufen? (Zeitverhalten?, Codegröße?)
Ich habe auch erst seit kurzem mit Programmierung zu tun und dann gleich 
so was.

Vielen Dank.

von Axel D. (axel_jeromin) Benutzerseite


Lesenswert?

Alex Dewor schrieb:
> Was ändert sich
> durch unterschiedliche Optimierungsstufen? (Zeitverhalten?, Codegröße?)

Der Compiler "denkt" je nach gewählter Optimierungsstufen mehr oder 
weniger über Dein Programm nach und lässt vermeintlich überflüssige (für 
ihn offensichlich überflüssige) Programmteile wie z.B. Warteschleifen 
weg.

Axel

von Troll (Gast)


Lesenswert?

Alex Dewor schrieb:
> Was ändert sich
> durch unterschiedliche Optimierungsstufen? (Zeitverhalten?, Codegröße?)

2x Ja.
Zum Beispiel bei den AVR ist es so, dass die Wartefunktionen nur korrekt 
arbeiten, wenn -Os eingestellt ist. -O0 bedeutet keine Optimierung. Der 
Compiler kann deinen Code nicht verbessern.

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.