www.mikrocontroller.net

Forum: Compiler & IDEs schiebeoperator langsamer als direkter wert?


Autor: pumpkin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
moin forum,

nur mal aus interesse hab ich ne frage (die hoffentlich noch nicht zu 
oft durchgekaut wurde - sufu hat nix ergeben).

kurz und knapp: was ist schneller?

x &= ~(1 << 7);

oder

x &= 0x7F;



man stelle sich das mit mehreren schiebeoperationen vor ( (...) | (...) 
| ... ). brauch der µC tatsächlich für jeden schiebevorgang 1 cycle 
(also im beispiel oben 7)?


pumpkin

p.s. ich tippe auf den 'direkten' wert

Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Konstante Werte, die dem Compiler bekannt sind, werden auch direkt vom 
Compiler berechnet und nicht während der Programmlaufzeit! "1 << 7" ist 
ein konstanter Wert, und genauso ist ~(1 << 7) konstant und zur 
Compilezeit bekannt. Eine 1 um 7 Stellen nach links geschoben ist ein 
80h, das Bitkomplement davon ist 7fh. Der Compiler macht daraus sofort 
den entsprechenden Binärwert. Die beiden obigen Schreibweisen sind, was 
den erzeugten Code angeht, identisch und demzufolge sind beide exakt 
gleich schnell. Das Thema ist hier aber tatsächlich schon x-mal 
durchgekaut worden.

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.