Vnitřní funkce kompilátoru

Většina funkcí je obsažena v knihovnách, ale některé funkce jsou integrovány (to znamená vnitřní) pro kompilátor. Tyto prvky se označují jako vnitřní funkce nebo vnitřní objekty.

Poznámky

Pokud je funkce vnitřní, kód pro tuto funkci je obvykle vložen vloženě, což vyloučí režii volání funkce a umožní, aby byly pro tuto funkci generovány vysoce efektivní pokyny pro počítače. Vnitřní je často rychlejší než ekvivalentní vložené sestavení, protože Optimalizátor má integrované znalosti o tom, kolik vnitřních objektů se chová, takže některé optimalizace mohou být k dispozici, které nejsou k dispozici při použití vloženého sestavení. Optimalizátor také může rozšířit vnitřní odlišně, zarovnat vyrovnávací paměti jinak nebo provádět jiné úpravy v závislosti na kontextu a argumentech volání.

Použití vnitřních objektů má vliv na přenositelnost kódu, protože vnitřní objekty, které jsou k dispozici v Visual C++ nemusí být k dispozici, pokud je kód zkompilován s jinými kompilátory a některé vnitřní objekty, které mohou být k dispozici pro některé cílové architektury, nejsou k dispozici pro všechny architektury. Vnitřní objekty jsou však obvykle více přenosné než vložené sestavení. Vnitřní objekty jsou požadovány v 64 architekturách, kde není podporováno vložené sestavení.

Některé vnitřní objekty, jako jsou __assume a __ReadWriteBarrier , poskytují informace kompilátoru, které mají vliv na chování Optimalizátoru.

Některé vnitřní objekty jsou k dispozici pouze jako vnitřní objekty a některé jsou k dispozici v rámci funkcí i vnitřních implementací. Můžete dát kompilátoru pokyn, aby používal vnitřní implementaci 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žít #pragma intrinsic(#pragma intrinsic() . Direktivu pragma lze použít k určení jednoho vnitřního nebo více vnitřních objektů oddělených čárkami. Druhým je použití možnosti kompilátoru /Oi (generovat vnitřní funkce) , která zpřístupňuje všechny vnitřní objekty na dané platformě. V části /Oipoužijte seznam vnitřních funkcí-Name-list , abyste vynutili použití volání funkce namísto vnitřní. Pokud dokumentace pro konkrétní vnitřní poznámky, kterou rutina je k dispozici pouze jako vnitřní, je použita vnitřní implementace bez ohledu na to, zda je zadána možnost /Oi nebo . Ve všech případech /Oi nebo umožňuje, ale nenutí, aby Optimalizátor používal vnitřní. Optimalizátor může stále volat funkci.

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

<K dispozici je hlavičkový soubor intrin. h, > který deklaruje prototypy pro společné vnitřní funkce. Vnitřní objekty specifické pro výrobce jsou k dispozici v <> hlavičkových souborech immintrin. h a < ammintrin. h > . kromě toho některé hlavičky Windows deklaruje funkce, 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 v různých architekturách. Další informace o tom, jak vnitřní funkce fungují na konkrétním cílovém procesoru, najdete v referenční dokumentaci výrobce.

Viz také

Referenční dokumentace assembleru ARM
Microsoft Macro Assembler – referenční dokumentace
Klíčová slova
Referenční dokumentace běhové knihovny jazyka C