-
-
Naja, ich versuche jetzt einfach mal zu beschreiben wie ich das sehe. Im Allgemeinen darf/soll ein Compiler ja nur dann optimieren, wenn er Beweisen kann, das der optimierte Code in jedem Fall zu dem gleichen Ergebnis führt, wie der ohne Optimierung.
Wir haben es hier mit shift Sperationen zu tun. Und im Prinzip geht es ja um die Frage, ob dem Compieler klar ist, das er ein einmal "weggeshiftetes" Bit nicht wieder durch shift in die andere Richtung zurückholen kann. Genauer gesagt geht es um die Kenntnis, das ein nach dem shift "leeres" Bit beim Shift definitiv eine 0 wird. Dann könnte er nämlich erkennen, das ">> 8 + <<" nicht zum selben Ergebnis füht wie ">>7".
Und dass er über dieses Wissen verfügt, lässt sich an einem klassischen Optimierungsbeispiel zeigen. Eine Division durch 2^n könnte er nämlich nicht duch einen shift >> n ersetzen, wenn er nicht wüßte, das die frei werdenen Stellen eine Null ergeben.
Ich behaupte daher mal unbewiesen, das er zumindest nicht zu ">>7" optimiert. Evtl. kommt er ja sogar auf die Sache mit der Maskierung, wer weiß
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen