mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Wie gut funktioniert Konstantenberechnung im Voraus?


Autor: Rumkugel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tag miteinander

ich habe mir neulich eine Fixpunktarithmetik zusammengebastelt und 
definiere dazu eine Menge Konstanten, die bereits beim Compilieren 
berechnet werden sollen.

Das Ganze funktioniert soweit einwandfrei, ich frage mich halt nur, ob 
wirklich alles vom Compiler/Präprozessor berechnet wird, oder ob doch 
etwas durchsickert und zur Laufzeit unnötig Zeit verschwendet.

Vielfach verschachtelte Funktionen und floats (Genauigkeit = Genauigkeit 
Zielsystem?) dürften ja wohl kein Problem sein, aber wie sieht es zum 
Beispiel hiermit aus?
#define FPA_CONST(a)   ((s32)((a)* FPA_ONE + ((a)>=0 ? 0.5 : -0.5) ))

a wird als float übergeben. Das sind zwar immer noch alles Konstanten, 
aber nun nicht mehr allzu trivial verknüpft.
Kriegt der Compiler auch sowas noch vor der Laufzeit hin?

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also mein Compiler kriegt das hin.

Ehrlich: Frag deinen Compiler, lass dir ein Assembler-Listing ausgeben 
und schau nach. Die Optimierungen des Compilers sind kaum vorhersehbar 
:->

Autor: Bernhard R. (barnyhh)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moderne Compiler - u.a. auch der GCC - "trivialisieren" alle 
Berechnungen. Inwieweit sie das Ganze dann anschließend optimieren, das 
liegt im Wesentlichen in der Hand des Programm-Schreibers; er besitzt 
die Möglichkeit, entsprechende Compiler-Optionen anzugeben. Für den GCC 
gibt es ein wunderschönes Handbuch, welches alle Compileroptionen 
ausführlich beschreibt.

Bernhard

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.