Funkcje wewnętrzne kompilatoraCompiler intrinsics

Większość funkcji znajduje się w bibliotekach, ale niektóre funkcje są wbudowane (czyli wewnętrznie) do kompilatora.Most functions are contained in libraries, but some functions are built in (that is, intrinsic) to the compiler. Są one określane jako funkcje wewnętrzne lub wewnętrzne.These are referred to as intrinsic functions or intrinsics.

UwagiRemarks

Jeśli funkcja jest wewnętrzną, kod dla tej funkcji jest zwykle wstawiany wewnętrznie, unikając obciążenia wywołania funkcji i umożliwiającego emitowanie wysoko wydajnych instrukcji maszynowych dla tej funkcji.If a function is an intrinsic, the code for that function is usually inserted inline, avoiding the overhead of a function call and allowing highly efficient machine instructions to be emitted for that function. Wewnętrzny jest często szybszy niż odpowiednik wbudowanego zestawu, ponieważ Optymalizator ma wbudowaną wiedzę o liczbie zastosowanych elementów wewnętrznych, dlatego niektóre optymalizacje mogą być dostępne, które nie są dostępne, gdy używany jest zestaw wbudowany.An intrinsic is often faster than the equivalent inline assembly, because the optimizer has a built-in knowledge of how many intrinsics behave, so some optimizations can be available that are not available when inline assembly is used. Ponadto Optymalizator może zwiększyć wewnętrzną zmianę, wyrównać bufory inaczej lub wprowadzić inne korekty w zależności od kontekstu i argumentów wywołania.Also, the optimizer can expand the intrinsic differently, align buffers differently, or make other adjustments depending on the context and arguments of the call.

Użycie funkcji wewnętrznych ma wpływ na przenośność kodu, ponieważ elementy wewnętrzne, które są dostępne w Visual C++ mogą być niedostępne, jeśli kod jest kompilowany z innymi kompilatorami, a niektóre funkcje wewnętrzne, które mogą być dostępne dla niektórych architektur docelowych, nie są dostępne dla wszystkich architektur.The use of intrinsics affects the portability of code, because intrinsics that are available in Visual C++ might not be available if the code is compiled with other compilers and some intrinsics that might be available for some target architectures are not available for all architectures. Jednak funkcje wewnętrzne są zwykle bardziej przenośne niż zestaw wbudowany.However, intrinsics are usually more portable than inline assembly. Elementy wewnętrzne są wymagane na 64-bitowych architekturach, w których Wbudowany zestaw nie jest obsługiwany.The intrinsics are required on 64-bit architectures where inline assembly is not supported.

Niektóre funkcje wewnętrzne, takie jak __assume i __ReadWriteBarrier , zawierają informacje dla kompilatora, które mają wpływ na zachowanie optymalizatora.Some intrinsics, such as __assume and __ReadWriteBarrier, provide information to the compiler, which affects the behavior of the optimizer.

Niektóre funkcje wewnętrzne są dostępne tylko jako elementy wewnętrzne, a niektóre z nich są dostępne zarówno w funkcjach, jak i wewnętrznie.Some intrinsics are available only as intrinsics, and some are available both in function and intrinsic implementations. Możesz nakazać kompilatorowi użycie wewnętrznej implementacji na jeden z dwóch sposobów, w zależności od tego, czy chcesz włączyć tylko określone funkcje, czy chcesz włączyć wszystkie elementy wewnętrzne.You can instruct the compiler to use the intrinsic implementation in one of two ways, depending on whether you want to enable only specific functions or you want to enable all intrinsics. Pierwszy sposób to użycie wewnętrznego- #pragma intrinsic( name-list ) .The first way is to use #pragma intrinsic(intrinsic-function-name-list). Dyrektywy pragma można użyć do określenia jednego wewnętrznego lub wielu elementów wewnętrznych rozdzielonych przecinkami.The pragma can be used to specify a single intrinsic or multiple intrinsics separated by commas. Drugim jest użycie opcji kompilatora /Oi (Generuj funkcje wewnętrzne) , która sprawia, że wszystkie elementy wewnętrzne na danej platformie są dostępne.The second is to use the /Oi (Generate intrinsic functions) compiler option, which makes all intrinsics on a given platform available. #pragma function( Aby wymusić użycie wywołania funkcji zamiast wewnętrznego, w obszarze/Oi należy użyć funkcji wewnętrznego-Name-list ) .Under /Oi, use #pragma function(intrinsic-function-name-list) to force a function call to be used instead of an intrinsic. Jeśli Dokumentacja dla określonych wewnętrznych notatek jest dostępna tylko jako wewnętrzna, implementacja wewnętrzna jest używana bez względu na to, czy /Oi czy #pragma intrinsic jest określony.If the documentation for a specific intrinsic notes that the routine is only available as an intrinsic, then the intrinsic implementation is used regardless of whether /Oi or #pragma intrinsic is specified. We wszystkich przypadkach /Oi lub #pragma intrinsic zezwala, ale nie wymusza, aby Optymalizator używał wewnętrznej.In all cases, /Oi or #pragma intrinsic allows, but does not force, the optimizer to use the intrinsic. Optymalizator nadal może wywołać funkcję.The optimizer can still call the function.

Niektóre standardowe funkcje biblioteki C/C++ są dostępne w implementacjach wewnętrznych w niektórych architekturach.Some standard C/C++ library functions are available in intrinsic implementations on some architectures. Podczas wywoływania funkcji CRT, implementacja wewnętrzna jest używana, jeśli /Oi jest określony w wierszu polecenia.When calling a CRT function, the intrinsic implementation is used if /Oi is specified on the command line.

Plik nagłówka, <intrin.h> ,, jest dostępny, który deklaruje prototypy dla wspólnych funkcji wewnętrznych.A header file, <intrin.h>, is available that declares prototypes for the common intrinsic functions. Funkcje wewnętrzne charakterystyczne dla producenta są dostępne w <immintrin.h> <ammintrin.h> plikach nagłówkowych i.Manufacturer-specific intrinsics are available in the <immintrin.h> and <ammintrin.h> header files. Ponadto niektóre nagłówki systemu Windows deklarują funkcje, które są mapowane na wewnętrzne kompilator.Additionally, certain Windows headers declare functions that map onto a compiler intrinsic.

W poniższych sekcjach wymieniono wszystkie funkcje wewnętrzne, które są dostępne w różnych architekturach.The following sections list all intrinsics that are available on various architectures. Aby uzyskać więcej informacji na temat sposobu działania elementów roboczych na określonym procesorze docelowym, zapoznaj się z dokumentacją producenta.For more information on how the intrinsics work on your particular target processor, refer to the manufacturer's reference documentation.

Zobacz teżSee also

Dokumentacja asemblera ARMARM assembler reference
Dokumentacja asemblera programu Microsoft MacroMicrosoft Macro Assembler reference
Słowa kluczoweKeywords
Dokumentacja biblioteki wykonawczej języka CC run-time library reference