Sdílet prostřednictvím


Vnitřní funkce kompilátoru

Většina funkcí, které jsou obsaženy v knihovnách, ale některé funkce jsou součástí (což je vnitřní) kompilátoru.Ty se nazývají vnitřní funkce nebo vnitřní objekty.

Poznámky

Pokud je vnitřní funkce, kód pro tuto funkci je obvykle vloženy, není zpomalován režií na volání funkce a vysoce efektivní strojových instrukcí, které mají být vypuštěny pro tuto funkci povolil.Vnitřním je často rychlejší než ekvivalentní vložené sestavení, protože okně Optimalizace má integrované znalost kolik vnitřní chovat, takže některé optimalizace může být k dispozici, nejsou k dispozici, pokud je použit vložené sestavení.Okně Optimalizace můžete také rozbalit vnitřní odlišně, jinak zarovnat vyrovnávací paměti nebo provedení dalších úprav v závislosti na kontextu a argumentů volání.

Použití vnitřní ovlivňuje přenositelnost kódu, protože vnitřní objekty, které jsou k dispozici v jazyce Visual C++ nemusí být k dispozici, pokud kód je kompilována s jiných kompilátoru a některé vnitřní objekty, které mohou být k dispozici některé architektur cíl nejsou k dispozici pro všechny architektury.Vnitřní objekty jsou však obvykle obecnější než vložené sestavení.Vnitřní objekty, je nutné 64bitové architektury, kde není podporován vložené sestavení.

Některé vnitřní objekty, jako je například __assume a __ReadWriteBarrier, poskytují informace kompilátoru, který má vliv na chování okně Optimalizace.

Některé vnitřní objekty jsou k dispozici pouze jako vnitřní objekty a některé jsou k dispozici ve funkci vnitřní implementace i.Můžete dát pokyn kompilátoru pro použití vnitřní implementace v jedním ze dvou způsobů, v závislosti na tom, zda chcete povolit pouze konkrétní funkce nebo chcete povolit všechny vnitřní objekty.Prvním způsobem je použití #pragma intrinsic(intrinsic-function-name-list).Záhlaví pragma lze použít k určení vnitřní jednu nebo více vnitřní oddělených čárkami.Druhý je používat /Oi (Generovat vnitřní funkce) možnosti kompilátoru, takže je vnitřní všechny objekty v dané platformy.V části /Oi, použijte #pragma function(intrinsic-function-name-list) k vynucení volání funkce, který má být použit místo vnitřním.Pokud v dokumentaci pro konkrétní vnitřní poznámky, je k dispozici jako vnitřní pouze rutinní, pak vnitřní implementace se používá bez ohledu na to, zda se /Oi nebo #pragma intrinsic je zadán.Ve všech případech /Oi nebo #pragma intrinsic umožňuje, ale nevynucuje, optimalizace sloužící vnitřním.Okně Optimalizace můžete stále volání funkce.

Některé funkce standardní knihovny C/C++ jsou k dispozici ve vnitřním implementace na některé architektur.Při volání funkce CRT, Vnitřní implementace je použita, pokud /Oi je zadána na příkazovém řádku.

Soubor hlaviček, < intrin.h >, je k dispozici, který deklaruje prototypy pro běžné vnitřní funkce.Vnitřní výrobce specifické objekty jsou k dispozici v < immintrin.h > a < ammintrin.h > hlavičkové soubory.Kromě toho určité záhlaví systému Windows deklarovat funkcí, které jsou mapovány na vnitřní kompilátor.

V následujících částech jsou uvedeny všechny vnitřní objekty, které jsou k dispozici na různých architektur.Další informace o práci vnitřní objekty na výkon procesoru konkrétní cíl naleznete v referenční dokumentaci výrobce.

Viz také

Referenční dokumentace

Klíčová slova jazyka C++

Další zdroje

Referenční dokumentace assembleru ARM

Microsoft Macro Assembler – referenční dokumentace

Referenční dokumentace běhové knihovny jazyka C