Top-Fragen
Zeitleiste
Chat
Kontext

Intrinsische Funktion

Aus Wikipedia, der freien Enzyklopädie

Remove ads

Hochsprachen-Compiler unterstützen häufig sogenannte intrinsische Funktionen (englisch intrinsic functions oder kurz intrinsics wörtlich für Innere [Funktionen]; selten auch systeminterne Funktionen genannt), bei denen prozessor­spezifische Operationen in Funktionsaufrufe gekapselt werden. Anders als bei der Verwendung von Inline-Assembler kann der Compiler Intrinsics in vollem Umfang bei Optimierungen berücksichtigen.

Häufig müssen für die Verwendung von Intrinsics bestimmte Header-Dateien eingebunden oder bestimmte Compiler-Optionen gesetzt werden.[1] Meist sind Intrinsics besonders benannt, um sie leichter von Bibliotheks- oder [Entwickler-]eigenen Funktionen unterscheiden zu können, zum Beispiel durch zwei Unterstriche als Präfix.

Remove ads

Beispiele

Die Programmzeile

u32_intvalue = __ROUND(f_floatvalue);

wird vom IAR C-Compiler für den Prozessor R32C in den Assembler-Code ROUND übersetzt, wobei der Compiler die Kontrolle über die Prozessor-Register hat, welche für die Variablen verwendet werden.[2] (Der ROUND-Opcode wandelt beim R32C eine Gleitkommazahl unter Berücksichtigung des für den Prozessor eingestellten Rundungsmodus in eine Integer-Zahl um.)

Situation in den Programmiersprachen C++ und C für x86

Microsofts und Intels C- und C++-Compiler sowie auch GCC bieten intrinsische Funktionen, die direkt auf SIMD-Instruktionen (MMX, SSE, SSE2, SSE3, SSSE3, SSE4) der x86-Prozessoren abbilden. In den neueren Versionen der Microsoft-Compiler (VC2005 und VC2008) wird kein Inline-Assembler für 64-Bit-Anwendungen unterstützt.[3] Um das Fehlen des Inline-Assemblers zu kompensieren, wurden zusätzliche intrinsische Funktionen hinzugefügt, die auf Standard-Assembler-Instruktionen abgebildet werden (wie z. B. bit scan), die ansonsten nicht durch C++ oder C erreichbar sind.

Remove ads

Einzelnachweise

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads