Spezialkommando

Über abs(), _cpuidex() und andere Intrinsics

Wissen | Know-how

Neue Prozessoren kommen in aller Regel auch mit neuen Möglichkeiten und Instruktionen daher – und es dauert oft viele Jahre, bis diese in Programmiersprachen Einzug halten. Daher bieten die Compiler Inline-Assembler und insbesondere bei C++ alternativ auch die weit praktischer zu nutzenden systeminternen Funktionen, Intrinsics oder Built-ins genannt.

Moderne Compiler kennen viele hundert systeminterne Funktionen oder Intrinsics. Die interessantesten davon wollen wir in einer lockeren Serie vorstellen, versehen mit ein paar Hintergründen, Einsatzmöglichkeiten und so weiter. Außen vor bleibt dabei jedoch das große Arsenal der Vektorbefehle für MMX, SSEx und AVX – allein letzteres wäre ein riesiges Thema für sich, das den hier angestrebten Rahmen sprengen würde. Es bleibt dennoch genug übrig, gibt es doch auch für die „normalen“ Integer- und FPU-Einheiten zuhauf interessante „native“ Intrinsics, die zum Teil noch aus der 386-Ära stammen und die dennoch bis heute keine Entsprechung in den Standard-Programmiersprachen gefunden haben, etwa interessante Bit-Befehle. Unsere geplante Auswahl geht von solchen ganz alten bis hin zu brandneuen Befehlen der Ivy-Bridge- und Piledriver-Generation.

Beschränken wollen wir uns bei den Betrachtungen der Serie auf C++, vornehmlich auf das der Microsoft- und Intel-Compiler; hier und da werfen wir auch einen Blick auf den gcc der GNU Compiler Collection. Microsofts C++-Compiler nehmen in dem Trio eine Sonderstellung ein, verwehren sie doch aus edukativen Gründen den Programmierern bei 64 Bit den Inline-Assembler und erzwingen so die Nutzung von Intrinsics. Microsoft begründet das unter anderem mit besseren Optimierungsmöglichkeiten sowie mit weit einfacherem Umgang bei Code, der sowohl für 32 also auch für 64 Bit ausgelegt sein soll. Voraussetzung dafür wäre jedoch, dass Microsoft auch zeitnah neue Prozessorbefehle als Intrinsic anbietet – was bislang leider mitnichten der Fall war. ...

Sie möchten wissen, wie es weitergeht?

Als c't-Plus-Abonnent gratis lesen

Anmelden als c't-Plus-Abonnent

weiterführende Links

Anzeige
Anzeige