Hallo Spezialisten, muss, wie im Betreff schon geschrieben, bei Einhaltung von MISRA-C, beim Compiler die komplette Optimierung abgeschaltet werden, oder nur spezielle Optimierungen? Ohne irgendeiner Optimierung, erzeugt der Compiler (CodeWarrior, HCS08), SEHR aufgeblähten Code, den man nur mühsam verfolgen kann. Ausserdem werden dann Compilereigene Hilfsroutinen aufgerufen, was recht undurchsichtig ist und ich eigentlich auch keine Bibliotheksroutinen verwenden wollte. Genügt es nicht, solche Optimierungen wie z.B. das selbstätige Zusammenfassen von Codestückchen in eigene Unterroutinen, oder das Ein/Aufrollen von Schleifen zu deaktivieren? lg Urlauber
MISRA sagt: jegliche Codeoptimierung = superböse
Gegenfrage, steht irgendwo in den MISRA-C Guidelines, dass Optimierungen verboten sind? MISRA-C beschreibt doch "nur" zusätzliche Regeln zur Programmiersprache C; waren denn da noch Forderungen an den Compiler?
Frank Bär schrieb: > jegliche Codeoptimierung = superböse Irgendwie eine blöde Regelung, oder nicht? Wenn der Compiler falsch implementiert ist, dann macht er auch ohne Optimierung Schrott... Wenn die Optimierung richtig implementiert ist, dann macht der Code das, was die Sprachregeln verlangen...
Frank Bär schrieb: > MISRA sagt: > jegliche Codeoptimierung = superböse Habe gerade nochmal die MISRA C 2004 durchgelesen. Ich sehe keinen Hinweis darauf, dass Optimierungen verboten sein sollten. Bitte belegen.
2ter Gast schrieb: > Gegenfrage, steht irgendwo in den MISRA-C Guidelines, dass Optimierungen > verboten sind? MISRA-C beschreibt doch "nur" zusätzliche Regeln zur > Programmiersprache C; waren denn da noch Forderungen an den Compiler? Korrektur: MISRA selbst verlangt das nicht. Automotive verlangt i.d.R. MISRA-C UND Verzicht auf Codeoptimierung. Mea culpa. @Lothar: Möchtest du dein Leben einer automatisierten Optimierung anvertrauen?
Möchtest du dein Leben einer automatisierten Umwandlung anvertrauen?
Frank Bär schrieb: > @Lothar: Möchtest du dein Leben einer automatisierten Optimierung > anvertrauen? Das ist ziemlich egal, denn ich muss mich auch darauf verlassen, dass der Compiler keinen Mist übersetzt und zb nicht mit den Registern durcheinanderkommt.
Auch zu bedenken: So ein Compiler wird eigentlich fast immer mit Optimierung eingesetzt, die optimierende Codererzeugung ist also vermutlich deutlich öfter und umfangreicher getestet als der abweichende Rest vom nicht-optimierenden Zweig. Und: Manche Programmierfehler meckert der Compiler nur an, wenn er auch die ganzen Datenfluss-Analyse-Geschichten zur Optimierung anstellt.
>Automotive verlangt i.d.R. MISRA-C UND Verzicht auf Codeoptimierung Das ist QUATSCH. Die Misra rules verlangen an keiner Stelle den Verzicht auf Codeoptimierung. Misra verlangt lediglich, bestimmte Programmierregeln einzuhalten, ausreichend Klammern zu setzen und bestimmte Konstrukte zu vermeiden. http://www.ristancase.com/html/dac/manual/3.12.02%20MISRA-C%202004%20Rules.html
Erich schrieb: >>Automotive verlangt i.d.R. MISRA-C UND Verzicht auf Codeoptimierung > > Das ist QUATSCH. > > Die Misra rules verlangen an keiner Stelle den Verzicht auf > Codeoptimierung. > > Misra verlangt lediglich, bestimmte Programmierregeln einzuhalten, > ausreichend Klammern zu setzen und bestimmte Konstrukte zu vermeiden. > > http://www.ristancase.com/html/dac/manual/3.12.02%20MISRA-C%202004%20Rules.html Muss ich jetzt wirklich die Bedeutung des Wörtchens "und" erklären?
Eneloop schrieb: > Auch zu bedenken: So ein Compiler wird eigentlich fast immer mit > Optimierung eingesetzt, die optimierende Codererzeugung ist also > vermutlich deutlich öfter und umfangreicher getestet als der abweichende > Rest vom nicht-optimierenden Zweig. > Und: Manche Programmierfehler meckert der Compiler nur an, wenn er auch > die ganzen Datenfluss-Analyse-Geschichten zur Optimierung anstellt. Das ist in dem Fall irrelevant. Für ISO26262-zertifizierte Automotive-Compiler gelten etwas strengere Spielregeln als für C99.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.