Udostępnij za pośrednictwem


Funkcje wewnętrzne kompilatora

Większość funkcji są zawarte w bibliotekach, ale niektóre funkcje są tworzone (czyli wewnętrznej) do kompilator.Te są nazywane wewnętrznych funkcji lub intrinsics.

Uwagi

Jeśli funkcja wewnętrznych, kod dla tej funkcji jest zazwyczaj wstawionego w tekście, umożliwia uniknięcie przeciążenia wywołania funkcji i stosowanie wysoko wydajne maszyny instrukcjami, aby emitować dla tej funkcji.Wewnętrznej jest często szybsze niż zestawu równoważnych tekście, ponieważ Optymalizator ma wbudowane wiedzy, o ile intrinsics zachowania, więc niektóre optymalizacji może być dostępny, które są niedostępne, gdy jest używany w tekście zestawu.Ponadto Optymalizator można rozwinąć wewnętrznej inaczej, Dopasuj buforów inaczej lub innych dostosować w zależności od kontekstu i argumenty wywołania.

Korzystanie z intrinsics ma wpływ na mobilność kodu, ponieważ intrinsics, które są dostępne w programie Visual C++ mogą być niedostępne, jeśli kod jest skompilowana z innych kompilatorów i niektóre intrinsics, które mogą być dostępne dla niektórych architektury docelowego nie są dostępne dla wszystkich architektury.Jednak intrinsics są zwykle przenośną niż zestawu w tekście.Intrinsics są wymagane w 64-bitowej architektury gdzie zestawu tekście nie jest obsługiwany.

Niektóre intrinsics, takich jak __assume i __ReadWriteBarrier, udostępnienia informacji kompilatora, które ma wpływ na zachowanie Optymalizator.

Niektóre intrinsics są dostępne tylko dla intrinsics, a niektóre są dostępne zarówno w wewnętrznej implementacji i funkcji.Możesz wydać polecenie kompilator używać wewnętrznej implementacji w jeden z dwóch sposobów, w zależności od tego, czy ma zostać włączony tylko określonych funkcji lub chcesz włączyć wszystkie intrinsics.Pierwszy sposób polega na użyciu #pragma intrinsic(intrinsic-function-name-list).Dyrektywę pragma może służyć do określania wewnętrznych jednym lub wielu intrinsics oddzielonych przecinkami.Drugi jest używanie /Oi (Generowanie wewnętrznych funkcji) opcję kompilatora, która udostępnia wszystkie intrinsics na danej platformie.W obszarze /Oi, użyj #pragma function(intrinsic-function-name-list) wymusić po wywołaniu funkcji można użyć zamiast wewnętrznych.Jeśli dokumentacji dla określonego wewnętrznej notatki, która procedura jest dostępna tylko, jako wewnętrznej, a następnie implementacji wewnętrznych jest używany niezależnie od tego, czy /Oi lub #pragma intrinsic jest określony.W każdym przypadku /Oi lub #pragma intrinsic umożliwia, ale nie wymusza Optymalizator do użycia wewnętrznych.Optymalizator nadal można wywołać funkcji.

Niektóre standardowe funkcje biblioteki C/C++ są dostępne wewnętrznej we wdrożeniach w systemie niektóre architektury.Podczas wywoływania funkcji CRT, wewnętrznej implementacji jest używane, gdy /Oi jest określona w wierszu polecenia.

Plik nagłówka, < intrin.h >, jest dostępny, która deklaruje prototypów dla wspólnych funkcji wewnętrznych.Specyficzne dla producenta intrinsics są dostępne w < immintrin.h > i < ammintrin.h > Pliki nagłówków.Ponadto niektórych nagłówków Windows deklarować funkcje, które mapowania na kompilatora wewnętrznych.

Poniższe sekcje listę wszystkich intrinsics, które są dostępne w różnych architektur.Aby uzyskać więcej informacji na temat działania intrinsics w określonej lokalizacji docelowej procesora można znaleźć w dokumentacji producenta.

Zobacz też

Informacje

Słowa kluczowe języka C++

Inne zasoby

Odwołanie do asemblera ARM

Microsoft Macro Assembler — odwołanie

Odwołanie do biblioteki C-Run-Time