Spezialkommando

Bits setzen, abfragen, scannen und mehr

Wissen | Know-how

Schon seit dem 386-Prozessor gibt es einen Satz von Maschinenbefehlen zum Setzen, Abfragen und Scannen von Bits. Hier und da weisen diese aber noch Mängel auf. AMD hat inzwischen beim K10 und noch mehr beim Piledriver kräftig nachgebessert. Intel wird mit Haswell und AVX2 folgen.

Spätestens wenn Intel irgendwann im Sommer mit dem Haswell-Prozessor und der umfangreichen AVX2-Instruktionssatzerweiterung herauskommt, dürften die von AMD mit dem Piledriver-Kern schon eingeführten neuen Bit-Befehle, die sich hinter BMI, Bit Manipulation Instructions, verbergen, aus ihrem Dornröschenschlaf erwachen. Bis dahin hat man also noch ein bisschen Zeit, und so stehen im Rahmen dieser kleinen Intrinsic-Serie zunächst einmal die klassischen Bit-Befehle, ergänzt um die beiden modernen Bitscan-Verfeinerungen lzcnt und tzcnt, auf dem Programm. AMD hat darüber hinaus unter TBM, Trailing Bit Manipulation, noch ein paar mehr Instruktionen in der Hinterhand, die Intel (noch) nicht übernommen hat.

Manche Compiler unterstützen „Bit“ als originären Datentyp. Fortran hat zumindest seit Version 77 zahlreiche Bitbefehle. Bei anderen Compilern wie C++ muss man entweder durch entsprechende Funktionen oder besser Klassen, durch Intrinsics oder notfalls mit Inline-Assembler nachhelfen. Immerhin kann man bei C++ von Haus aus die Strukturelemente bitgenau definieren. Für allgemeines Bitmanagement sind hier üblicherweise die bitset-Klassen in der Standard Template Library (einzubinden mit #include <bitset>) zuständig. Diese Klassen unterstützen allerdings nur Bitfelder mit konstanter Größe. ...

Sie möchten wissen, wie es weitergeht?

Als c't-Plus-Abonnent gratis lesen

Anmelden als c't-Plus-Abonnent

weiterführende Links

Anzeige