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 prozessorspezifische 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
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads