Systeminterne Funktionen des Compilers

Die meisten Funktionen in Bibliotheken enthalten sind, aber einige Funktionen sind integriert (das heißt, systeminternen) an den Compiler.Diese werden als systeminterne Funktionen oder Spezifikationen bezeichnet.

Hinweise

Wenn eine Funktion eine systeminterne Funktion ist, ist der Code für diese Funktion Inline in der Regel eingefügt, und der für einen Funktionsaufruf und hocheffiziente Maschinenanweisungen für diese Funktion ermöglicht.Eine systeminterne Funktion ist häufig schneller als die entsprechende Inline-Assemblierung, da der Optimierer eine Verhalten sich wie viele systeminterne Funktionen, unterstützt so können einige Optimierungen verfügbar sein, die sind nicht verfügbar, wenn die Inline-Assemblierung verwendet wird.Auch kann der Optimierer anders systeminternen erweitern, Puffer anders ausrichten, oder andere Anpassungen vornehmen je nach Kontext und die Argumente des Aufrufs.

Die Verwendung von systeminternen Funktionen betrifft die Portabilität von Code, da systeminterne Funktionen, die in Visual C++ sind möglicherweise nicht verfügbar Wenn der Code mit anderen Compilern kompiliert ist und einige systeminterne Funktionen, die möglicherweise für einige Zielarchitekturen verfügbar nicht für alle Architekturen verfügbar sind.Systeminterne Funktionen sind jedoch in der Regel besser portierbar als Inline-Assemblierung.Die systeminterne Funktionen sind auf 64-Bit-Architekturen erforderlich, in denen Inlineassembly nicht unterstützt wird.

Einige systeminterne Funktionen, wie z. B. __assume und __ReadWriteBarrier, enthalten Informationen, die der Compiler, der das Verhalten des Optimierers beeinflusst.

Einige systeminterne Funktionen sind nur als systeminterne Funktionen verfügbar, und einige stehen sowohl in Funktion und systeminterne Implementierungen.Sie können anweisen, dass des Compilers verwendet die integrierte Implementierung in zwei Möglichkeiten, je nachdem, ob Sie nur bestimmte Funktionen aktivieren möchten oder alle systeminterne Funktionen aktivieren möchten.The first way is to use #pragma intrinsic(intrinsic-function-name-list).Das Pragma kann verwendet werden, um eine systeminterne einzelne oder mehrere systeminterne Funktionen, die durch Kommas getrennt angeben.Die zweite Methode verwendet die /Oi (systeminterne Funktionen erstellen) -Compileroption, die alle Spezifikationen für eine bestimmte Plattform zur Verfügung stellt.Unter /Oi, verwenden Sie #pragma function(intrinsic-function-name-list) zu erzwingen, einen Funktionsaufruf, statt eine systeminterne Funktion verwendet werden.Wenn die Dokumentation für eine bestimmte systeminterne stellt, dass fest die Routine ist nur als systeminterne Funktion verfügbar, und klicken Sie dann die integrierte Implementierung verwendet, unabhängig davon, ob /Oi oder #pragma intrinsic angegeben ist.In allen Fällen /Oi oder #pragma intrinsic erlaubt, aber wird nicht erzwungen, den Optimierer die systeminterne verwenden.Der Optimierer kann immer noch die Funktion aufrufen.

Einige Standardfunktionen der C/C++-Bibliothek sind in systeminternen Implementierungen auf manchen Architekturen verfügbar.Beim Aufrufen einer CRT-Funktion wird die integrierte Implementierung verwendet, wenn /Oi in der Befehlszeile angegeben ist.

Eine Headerdatei INTRIN.h befindet, steht zur Verfügung, die Prototypen für die systeminternen Funktionen deklariert.Bestimmte Windows-Header deklarieren außerdem Funktionen, die eine systeminterne Compilerfunktion zuordnen.

Den folgenden Abschnitten werden alle Spezifikationen, die auf verschiedenen Architekturen verfügbar sind.Weitere Informationen über die Funktionsweise die Spezifikationen für Ihr bestimmtes Ziel-Prozessor finden Sie in der Dokumentation des Herstellers Verweis.

Siehe auch

Referenz

C++-Schlüsselwörter

Weitere Ressourcen

ARM Assemblerreferenz

Referenz zum Microsoft Macro Assembler

C-Laufzeitbibliothek-Referenz