Funkcje wewnętrzne ARM
Kompilator Visual C++ udostępnia następujące intrinsics w ramach architektury ARM.Aby uzyskać więcej informacji o ARM, zobacz instrukcji obsługi architektury ARM i podręcznik narzędzia asembler ARM w witrynie sieci Web Centrum informacyjne ARM.
NEON
Rozszerzenie zestaw instrukcji wektora NEONU dla ARM zapewniają znajdującymi się zestawów instrukcji wektora MMX i SSE wspólne dla procesorów x 86 i x 64 procesory architektury przypominają funkcje pojedynczej instrukcji wielu danych (SIMD).
Intrinsics NEONU są obsługiwane zgodnie z pliku nagłówka arm_neon.h.Obsługa kompilatora Visual C++ intrinsics NEONU podobny z kompilatora ARM, które jest opisane w dodatku G toolchain ARM kompilatora, wersja 4.1 kompilatora odwołania w witrynie sieci Web Centrum informacyjne ARM.
Podstawowa różnica między kompilator Visual C++ i kompilatora ARM jest, że kompilator Visual C++ dodaje _ex wariantów vldX i vstX wektorową obciążenia i Zapisz instrukcje._ex Wariantów zająć dodatkowy parametr określa wyrównanie argument wskaźnik, ale są identyczne w przeciwnym razie do ich bez -_ex odpowiednikami.
Specyficzne dla ARM Intrinsics sprzedaży
Nazwa funkcji |
Instrukcja |
Funkcja prototypu |
---|---|---|
_arm_smlal |
SMLAL |
_arm_smlal __int64 (__int64 _RdHiLo, int _Rn, int _Rm) |
_arm_umlal |
UMLAL |
wartości bez znaku __int64 _arm_umlal (_RdHiLo __int64 niepodpisanych, _Rn niepodpisanych int, _Rm niepodpisanych int) |
_arm_clz |
CLZ |
niepodpisane int _arm_clz (int niepodpisanych _Rm) |
_arm_qadd |
QADD |
int _arm_qadd (int _Rm, int _Rn) |
_arm_qdadd |
QDADD |
int _arm_qdadd (int _Rm, int _Rn) |
_arm_qdsub |
QDSUB |
int _arm_qdsub (int _Rm, int _Rn) |
_arm_qsub |
QSUB |
int _arm_qsub (int _Rm, int _Rn) |
_arm_smlabb |
SMLABB |
int _arm_smlabb (int _Rn, int _Rm, int _Ra) |
_arm_smlabt |
SMLABT |
int _arm_smlabt (int _Rn, int _Rm, int _Ra) |
_arm_smlatb |
SMLATB |
int _arm_smlatb (int _Rn, int _Rm, int _Ra) |
_arm_smlatt |
SMLATT |
int _arm_smlatt (int _Rn, int _Rm, int _Ra) |
_arm_smlalbb |
SMLALBB |
_arm_smlalbb __int64 (__int64 _RdHiLo, int _Rn, int _Rm) |
_arm_smlalbt |
SMLALBT |
_arm_smlalbt __int64 (__int64 _RdHiLo, int _Rn, int _Rm) |
_arm_smlaltb |
SMLALTB |
_arm_smlaltb __int64 (__int64 _RdHiLo, int _Rn, int _Rm) |
_arm_smlaltt |
SMLALTT |
_arm_smlaltt __int64 (__int64 _RdHiLo, int _Rn, int _Rm) |
_arm_smlawb |
SMLAWB |
int _arm_smlawb (int _Rn, int _Rm, int _Ra) |
_arm_smlawt |
SMLAWT |
int _arm_smlawt (int _Rn, int _Rm, int _Ra) |
_arm_smulbb |
SMULBB |
int _arm_smulbb (int _Rn, int _Rm) |
_arm_smulbt |
SMULBT |
int _arm_smulbt (int _Rn, int _Rm) |
_arm_smultb |
SMULTB |
int _arm_smultb (int _Rn, int _Rm) |
_arm_smultt |
SMULTT |
int _arm_smultt (int _Rn, int _Rm) |
_arm_smulwb |
SMULWB |
int _arm_smulwb (int _Rn, int _Rm) |
_arm_smulwt |
SMULWT |
int _arm_smulwt (int _Rn, int _Rm) |
_arm_sadd16 |
SADD16 |
int _arm_sadd16 (_Rn int, int _Rm) |
_arm_sadd8 |
SADD8 |
int _arm_sadd8 (_Rn int, int _Rm) |
_arm_sasx |
SASX |
int _arm_sasx (int _Rn, int _Rm) |
_arm_ssax |
SSAX |
int _arm_ssax (int _Rn, int _Rm) |
_arm_ssub16 |
SSUB16 |
int _arm_ssub16 (_Rn int, int _Rm) |
_arm_ssub8 |
SSUB8 |
int _arm_ssub8 (_Rn int, int _Rm) |
_arm_shadd16 |
SHADD16 |
int _arm_shadd16 (_Rn int, int _Rm) |
_arm_shadd8 |
SHADD8 |
int _arm_shadd8 (_Rn int, int _Rm) |
_arm_shasx |
SHASX |
int _arm_shasx (int _Rn, int _Rm) |
_arm_shsax |
SHSAX |
int _arm_shsax (int _Rn, int _Rm) |
_arm_shsub16 |
SHSUB16 |
int _arm_shsub16 (_Rn int, int _Rm) |
_arm_shsub8 |
SHSUB8 |
int _arm_shsub8 (_Rn int, int _Rm) |
_arm_qadd16 |
QADD16 |
int _arm_qadd16 (_Rn int, int _Rm) |
_arm_qadd8 |
QADD8 |
int _arm_qadd8 (_Rn int, int _Rm) |
_arm_qasx |
QASX |
int _arm_qasx (int _Rn, int _Rm) |
_arm_qsax |
QSAX |
int _arm_qsax (int _Rn, int _Rm) |
_arm_qsub16 |
QSUB16 |
int _arm_qsub16 (_Rn int, int _Rm) |
_arm_qsub8 |
QSUB8 |
int _arm_qsub8 (_Rn int, int _Rm) |
_arm_uadd16 |
UADD16 |
niepodpisane int _arm_uadd16 (_Rn niepodpisanych int, int niepodpisanych _Rm) |
_arm_uadd8 |
UADD8 |
niepodpisane int _arm_uadd8 (_Rn niepodpisanych int, int niepodpisanych _Rm) |
_arm_uasx |
UASX |
niepodpisane int _arm_uasx (_Rn niepodpisanych int, int niepodpisanych _Rm) |
_arm_usax |
USAX |
niepodpisane int _arm_usax (_Rn niepodpisanych int, int niepodpisanych _Rm) |
_arm_usub16 |
USUB16 |
niepodpisane int _arm_usub16 (_Rn niepodpisanych int, int niepodpisanych _Rm) |
_arm_usub8 |
USUB8 |
niepodpisane int _arm_usub8 (_Rn niepodpisanych int, int niepodpisanych _Rm) |
_arm_uhadd16 |
UHADD16 |
niepodpisane int _arm_uhadd16 (_Rn niepodpisanych int, int niepodpisanych _Rm) |
_arm_uhadd8 |
UHADD8 |
niepodpisane int _arm_uhadd8 (_Rn niepodpisanych int, int niepodpisanych _Rm) |
_arm_uhasx |
UHASX |
niepodpisane int _arm_uhasx (_Rn niepodpisanych int, int niepodpisanych _Rm) |
_arm_uhsax |
UHSAX |
niepodpisane int _arm_uhsax (_Rn niepodpisanych int, int niepodpisanych _Rm) |
_arm_uhsub16 |
UHSUB16 |
niepodpisane int _arm_uhsub16 (_Rn niepodpisanych int, int niepodpisanych _Rm) |
_arm_uhsub8 |
UHSUB8 |
niepodpisane int _arm_uhsub8 (_Rn niepodpisanych int, int niepodpisanych _Rm) |
_arm_uqadd16 |
UQADD16 |
niepodpisane int _arm_uqadd16 (_Rn niepodpisanych int, int niepodpisanych _Rm) |
_arm_uqadd8 |
UQADD8 |
niepodpisane int _arm_uqadd8 (_Rn niepodpisanych int, int niepodpisanych _Rm) |
_arm_uqasx |
UQASX |
niepodpisane int _arm_uqasx (_Rn niepodpisanych int, int niepodpisanych _Rm) |
_arm_uqsax |
UQSAX |
niepodpisane int _arm_uqsax (_Rn niepodpisanych int, int niepodpisanych _Rm) |
_arm_uqsub16 |
UQSUB16 |
niepodpisane int _arm_uqsub16 (_Rn niepodpisanych int, int niepodpisanych _Rm) |
_arm_uqsub8 |
UQSUB8 |
niepodpisane int _arm_uqsub8 (_Rn niepodpisanych int, int niepodpisanych _Rm) |
_arm_sxtab |
SXTAB |
int _arm_sxtab (int _Rn, int _Rm, _Rotation niepodpisanych int) |
_arm_sxtab16 |
SXTAB16 |
int _arm_sxtab16 (_Rn int, int _Rm, niepodpisanych int _Rotation) |
_arm_sxtah |
SXTAH |
int _arm_sxtah (int _Rn, int _Rm, _Rotation niepodpisanych int) |
_arm_uxtab |
UXTAB |
niepodpisane int _arm_uxtab (_Rn niepodpisanych int, _Rm niepodpisanych int, _Rotation niepodpisanych int) |
_arm_uxtab16 |
UXTAB16 |
niepodpisane int _arm_uxta16b (niepodpisanych int _Rn, int niepodpisanych _Rm, _Rotation niepodpisanych int) |
_arm_uxtah |
UXTAH |
niepodpisane int _arm_uxtah (_Rn niepodpisanych int, _Rm niepodpisanych int, _Rotation niepodpisanych int) |
_arm_sxtb |
SXTB |
int _arm_sxtb (int _Rn, int niepodpisanych _Rotation) |
_arm_sxtb16 |
SXTB16 |
int _arm_sxtb16 (_Rn int, int niepodpisanych _Rotation) |
_arm_sxth |
SXTH |
int _arm_sxth (int _Rn, int niepodpisanych _Rotation) |
_arm_uxtb |
UXTB |
niepodpisane int _arm_uxtb (_Rn niepodpisanych int, int niepodpisanych _Rotation) |
_arm_uxtb16 |
UXTB16 |
niepodpisane int _arm_uxtb16 (_Rn niepodpisanych int, int niepodpisanych _Rotation) |
_arm_uxth |
UXTH |
niepodpisane int _arm_uxth (_Rn niepodpisanych int, int niepodpisanych _Rotation) |
_arm_pkhbt |
PKHBT |
int _arm_pkhbt (int _Rn, int _Rm, _Lsl_imm niepodpisanych int) |
_arm_pkhtb |
PKHTB |
int _arm_pkhtb (int _Rn, int _Rm, _Asr_imm niepodpisanych int) |
_arm_usad8 |
USAD8 |
niepodpisane int _arm_usad8 (_Rn niepodpisanych int, int niepodpisanych _Rm) |
_arm_usada8 |
USADA8 |
niepodpisane int _arm_usada8 (niepodpisanych int _Rn, int niepodpisanych _Rm, _Ra niepodpisanych int) |
_arm_ssat |
SSAT |
int _arm_ssat (int niepodpisanych _Sat_imm, _int _Rn, _ARMINTR_SHIFT_T _Shift_type, _Shift_imm niepodpisanych int) |
_arm_usat |
USAT |
int _arm_usat (int niepodpisanych _Sat_imm, _int _Rn, _ARMINTR_SHIFT_T _Shift_type, _Shift_imm niepodpisanych int) |
_arm_ssat16 |
SSAT16 |
int _arm_ssat16 (int niepodpisanych _Sat_imm, _int _Rn) |
_arm_usat16 |
USAT16 |
int _arm_usat16 (int niepodpisanych _Sat_imm, _int _Rn) |
_arm_rev |
WSTECZ |
niepodpisane int _arm_rev (int niepodpisanych _Rm) |
_arm_rev16 |
REV16 |
niepodpisane int _arm_rev16 (niepodpisanych int _Rm) |
_arm_revsh |
REVSH |
niepodpisane int _arm_revsh (int niepodpisanych _Rm) |
_arm_smlad |
SMLAD |
int _arm_smlad (int _Rn, int _Rm, int _Ra) |
_arm_smladx |
SMLADX |
int _arm_smladx (int _Rn, int _Rm, int _Ra) |
_arm_smlsd |
SMLSD |
int _arm_smlsd (int _Rn, int _Rm, int _Ra) |
_arm_smlsdx |
SMLSDX |
int _arm_smlsdx (int _Rn, int _Rm, int _Ra) |
_arm_smmla |
SMMLA |
int _arm_smmla (int _Rn, int _Rm, int _Ra) |
_arm_smmlar |
SMMLAR |
int _arm_smmlar (int _Rn, int _Rm, int _Ra) |
_arm_smmls |
SMMLS |
int _arm_smmls (int _Rn, int _Rm, int _Ra) |
_arm_smmlsr |
SMMLSR |
int _arm_smmlsr (int _Rn, int _Rm, int _Ra) |
_arm_smmul |
SMMUL |
int _arm_smmul (int _Rn, int _Rm) |
_arm_smmulr |
SMMULR |
int _arm_smmulr (int _Rn, int _Rm) |
_arm_smlald |
SMLALD |
_arm_smlald __int64 (__int64 _RdHiLo, int _Rn, int _Rm) |
_arm_smlaldx |
SMLALDX |
_arm_smlaldx __int64 (__int64 _RdHiLo, int _Rn, int _Rm) |
_arm_smlsld |
SMLSLD |
_arm_smlsld __int64 (__int64 _RdHiLo, int _Rn, int _Rm) |
_arm_smlsldx |
SMLSLDX |
_arm_smlsldx __int64 (__int64 _RdHiLo, int _Rn, int _Rm) |
_arm_smuad |
SMUAD |
int _arm_smuad (int _Rn, int _Rm) |
_arm_smuadx |
SMUADX |
int _arm_muadxs (int _Rn, int _Rm) |
_arm_smusd |
SMUSD |
int _arm_smusd (int _Rn, int _Rm) |
_arm_smusdx |
SMUSDX |
int _arm_smusdx (int _Rn, int _Rm) |
_arm_smull |
SMULL |
_arm_smull __int64 (int _Rn, int _Rm) |
_arm_umull |
UMULL |
wartości bez znaku __int64 _arm_umull (_Rn niepodpisanych int, int niepodpisanych _Rm) |
_arm_umaal |
UMAAL |
wartości bez znaku __int64 _arm_umaal (_RdLo niepodpisanych int, _RdHi int niepodpisanych, _Rn int niepodpisanych, _Rm niepodpisanych int) |
_arm_bfc |
BFC |
niepodpisane int _arm_bfc (_Rd niepodpisanych int, _Lsb niepodpisanych int, int niepodpisanych właściwości) |
_arm_bfi |
BFI |
niepodpisane int _arm_bfi (_Rd int niepodpisanych, _Rn int niepodpisanych, _Lsb niepodpisanych int, int niepodpisanych właściwości) |
_arm_rbit |
RBIT |
niepodpisane int _arm_rbit (int niepodpisanych _Rm) |
_arm_sbfx |
SBFX |
int _arm_sbfx (int _Rn, _Lsb niepodpisanych int, int niepodpisanych właściwości) |
_arm_ubfx |
UBFX |
niepodpisane int _arm_ubfx (_Rn niepodpisanych int, _Lsb niepodpisanych int, int niepodpisanych właściwości) |
_arm_sdiv |
SDIV |
int _arm_sdiv (int _Rn, int _Rm) |
_arm_udiv |
UDIV |
niepodpisane int _arm_udiv (_Rn niepodpisanych int, int niepodpisanych _Rm) |
__cps |
USŁUGI PUNKTU POŁĄCZENIA |
Unieważnij __cps (_Ops niepodpisanych int, _Flags niepodpisanych int, _Mode niepodpisanych int) |
__dmb |
MB |
void __dmb (niepodpisanych int _Type) Wstawia operację bariery pamięci w strumieniu instrukcji.Parametr _Type określa rodzaj ograniczenia wymusza bariery. Aby uzyskać więcej informacji na temat rodzaju ograniczenia, które mogą zostać wymuszone zobacz ograniczenia bariery pamięci. |
__dsb |
DSB |
Unieważnij __dsb (int niepodpisanych _wprowadź) Wstawia operację bariery pamięci w strumieniu instrukcji.Parametr _Type określa rodzaj ograniczenia wymusza bariery. Aby uzyskać więcej informacji na temat rodzaju ograniczenia, które mogą zostać wymuszone zobacz ograniczenia bariery pamięci. |
__isb |
ISB |
Unieważnij __isb (int niepodpisanych _wprowadź) Wstawia operację bariery pamięci w strumieniu instrukcji.Parametr _Type określa rodzaj ograniczenia wymusza bariery. Aby uzyskać więcej informacji na temat rodzaju ograniczenia, które mogą zostać wymuszone zobacz ograniczenia bariery pamięci. |
__emit |
Unieważnij __emit (kod operacji niepodpisanych __int32) Wstawia określoną instrukcję do strumienia instrukcji danych wyjściowych przez kompilator. Wartość opcode musi być stałego wyrażenia, które jest znany w czasie kompilacji.Rozmiar instrukcję słowa jest 16 bitów i najbardziej znaczących bitów 16 opcode są ignorowane. Kompilator nie udziela próba zinterpretować zawartości opcode i nie gwarantuje stan procesora CPU lub pamięci przed wykonaniem wstawionego instrukcji. Kompilator przyjęto, że Stany procesora CPU i pamięci są bez zmian, po wykonaniu wstawionego instrukcji.W związku z tym instrukcje dotyczące zmiany stanu mogą mieć szkodliwe wpływ na normalne kodu, który jest generowany przez kompilator. Z tego powodu, użyj emit tylko do wstawienia instrukcje wpływających na stan Procesora, który kompilator zwykle nie przetwarza — na przykład coprocessor stanu — lub wdrożenia funkcji, które są zadeklarowane za pomocą declspec(naked). |
|
__hvc |
HVC |
niepodpisane int __hvc (niepodpisanych int,...) |
__iso_volatile_load16 |
__int16 __iso_volatile_load16 (stała __int16 lotnych *) Aby uzyskać więcej informacji, zobacz intrinsics __iso_volatile_load/magazynu. |
|
__iso_volatile_load32 |
__int32 __iso_volatile_load32 (stała __int32 lotnych *) Aby uzyskać więcej informacji, zobacz intrinsics __iso_volatile_load/magazynu. |
|
__iso_volatile_load64 |
__int64 __iso_volatile_load64 (stała __int64 lotnych *) Aby uzyskać więcej informacji, zobacz intrinsics __iso_volatile_load/magazynu. |
|
__iso_volatile_load8 |
__int8 __iso_volatile_load8 (stała __int8 lotnych *) Aby uzyskać więcej informacji, zobacz intrinsics __iso_volatile_load/magazynu. |
|
__iso_volatile_store16 |
void __iso_volatile_store16 (lotnych __int16 *, __int16) Aby uzyskać więcej informacji, zobacz intrinsics __iso_volatile_load/magazynu. |
|
__iso_volatile_store32 |
void __iso_volatile_store32 (lotnych __int32 *, __int32) Aby uzyskać więcej informacji, zobacz intrinsics __iso_volatile_load/magazynu. |
|
__iso_volatile_store64 |
void __iso_volatile_store64 (lotnych __int64 *, __int64) Aby uzyskać więcej informacji, zobacz intrinsics __iso_volatile_load/magazynu. |
|
__iso_volatile_store8 |
void __iso_volatile_store8 (lotnych __int8 *, __int8) Aby uzyskać więcej informacji, zobacz intrinsics __iso_volatile_load/magazynu. |
|
__ldrexd |
LDREXD |
__int64 __ldrexd (stała __int64 lotnych *) |
__prefetch |
PLD |
void __cdecl __prefetch(const void *) Udostępnia PLD pamięci hint do systemu, że ilość pamięci na lub w pobliżu określony adres może dostępny wkrótce.Niektóre systemy zrezygnować z zoptymalizowane pod kątem tego wzorca dostępu do pamięci w celu zwiększenia wydajności w czasie wykonywania.Jednak z C++ języka punktu widzenia, funkcja nie ma wpływu zauważalne i w ogóle nie nothing. |
__rdpmccntr64 |
wartości bez znaku __int64 __rdpmccntr64(void) |
|
__sev |
PROBLEMEM |
Unieważnij __sev(void) |
__static_assert |
void __static_assert (int, stała char *) |
|
__swi |
SVC |
niepodpisane int __swi (niepodpisanych int,...) |
__trap |
BKPT |
int __trap (int,...) |
__wfe |
WFE |
Unieważnij __wfe(void) |
__wfi |
WFI |
Unieważnij __wfi(void) |
_AddSatInt |
QADD |
int _AddSatInt (int, int) |
_CopyDoubleFromInt64 |
Podwójna _CopyDoubleFromInt64(__int64) |
|
_CopyFloatFromInt32 |
Przestaw _CopyFloatFromInt32(__int32) |
|
_CopyInt32FromFloat |
__int32 _CopyInt32FromFloat(float) |
|
_CopyInt64FromDouble |
__int64 _CopyInt64FromDouble(double) |
|
_CountLeadingOnes |
niepodpisane int _CountLeadingOnes(unsigned long) |
|
_CountLeadingOnes64 |
niepodpisane int _CountLeadingOnes64(unsigned __int64) |
|
_CountLeadingSigns |
niepodpisane int _CountLeadingSigns(long) |
|
_CountLeadingSigns64 |
niepodpisane int _CountLeadingSigns64(__int64) |
|
_CountLeadingZeros |
niepodpisane int _CountLeadingZeros(unsigned long) |
|
_CountLeadingZeros64 |
niepodpisane int _CountLeadingZeros64(unsigned __int64) |
|
_CountOneBits |
niepodpisane int _CountOneBits(unsigned long) |
|
_CountOneBits64 |
niepodpisane int _CountOneBits64(unsigned __int64) |
|
_DAddSatInt |
QDADD |
int _DAddSatInt (int, int) |
_DSubSatInt |
QDSUB |
int _DSubSatInt (int, int) |
_isunordered |
int _isunordered (podwójne, double) |
|
_isunorderedf |
int _isunorderedf (zmiennoprzecinkowa, zmiennoprzecinkowa) |
|
_MoveFromCoprocessor |
MRC |
niepodpisane int _MoveFromCoprocessor (niepodpisanych int, int niepodpisanych, niepodpisanych int, int niepodpisanych, niepodpisanych int) Odczytuje dane z coprocessor ARM przy użyciu instrukcji coprocessor transferu danych.Aby uzyskać więcej informacji, zobacz _MoveFromCoprocessor, _MoveFromCoprocessor2. |
_MoveFromCoprocessor2 |
MRC2 |
niepodpisane int _MoveFromCoprocessor2 (niepodpisanych int, int niepodpisanych, niepodpisanych int, int niepodpisanych, niepodpisanych int) Odczytuje dane z coprocessor ARM przy użyciu instrukcji coprocessor transferu danych.Aby uzyskać więcej informacji, zobacz _MoveFromCoprocessor, _MoveFromCoprocessor2. |
_MoveFromCoprocessor64 |
MRRC |
niepodpisane __int64 _MoveFromCoprocessor64 (niepodpisanych int, int niepodpisanych, niepodpisanych int) Odczytuje dane z coprocessor ARM przy użyciu instrukcji coprocessor transferu danych.Aby uzyskać więcej informacji, zobacz _MoveFromCoprocessor64. |
_MoveToCoprocessor |
MCR |
Unieważnij _MoveToCoprocessor (niepodpisanych int, int niepodpisanych, niepodpisanych int, int niepodpisanych, niepodpisanych int, int niepodpisanych) Odczytuje dane z coprocessor ARM przy użyciu instrukcji coprocessor transferu danych.Aby uzyskać więcej informacji, zobacz _MoveToCoprocessor, _MoveToCoprocessor2. |
_MoveToCoprocessor2 |
MCR2 |
void _MoveToCoprocessor2 (niepodpisanych int, int niepodpisanych, niepodpisanych int, int niepodpisanych, niepodpisanych int, int niepodpisanych) Odczytuje dane z coprocessor ARM przy użyciu instrukcji coprocessor transferu danych.Aby uzyskać więcej informacji, zobacz _MoveToCoprocessor, _MoveToCoprocessor2. |
_MoveToCoprocessor64 |
MCRR |
void _MoveToCoprocessor64 (niepodpisanych __int64, niepodpisanych int, int niepodpisanych, niepodpisanych int) Odczytuje dane z coprocessor ARM przy użyciu instrukcji coprocessor transferu danych.Aby uzyskać więcej informacji, zobacz _MoveToCoprocessor64. |
_MulHigh |
długie _MulHigh (długo, długie) |
|
_MulUnsignedHigh |
niepodpisane długi _MulUnsignedHigh (długa wartości bez znaku długo, bez znaku) |
|
_ReadBankedReg |
PANI |
int _ReadBankedReg (int _Reg) |
_ReadStatusReg |
PANI |
int _ReadStatusReg(int) |
_SubSatInt |
QSUB |
int _SubSatInt (int, int) |
_WriteBankedReg |
MSR |
Unieważnij _WriteBankedReg (_wartość int, int _Reg) |
_WriteStatusReg |
MSR |
Unieważnij _WriteStatusReg (int, int, int) |
[Przejdź do góry]
Ograniczenia bariery pamięci
Funkcje wewnętrznej __dmb (bariery pamięci danych), __dsb (bariery synchronizacji danych), i __isb następujące wstępnie zdefiniowane wartości określające ograniczenia bariery pamięci w zakresie udostępniania domeny i rodzaj dostępu do których zastosowano operacji użyj (bariery synchronizacji instrukcji).
Wartość ograniczenia |
Opis |
---|---|
_ARM_BARRIER_SY |
Pełny system odczyty i zapisy. |
_ARM_BARRIER_ST |
Pełny system tylko zapisy. |
_ARM_BARRIER_ISH |
Wewnętrzny sharable odczyty i zapisy. |
_ARM_BARRIER_ISHST |
Wewnętrzny sharable, zapisy tylko. |
_ARM_BARRIER_NSH |
Inne niż sharable, odczyty i zapisy. |
_ARM_BARRIER_NSHST |
Non-sharable, zapisuje tylko. |
_ARM_BARRIER_OSH |
Zewnętrzne sharable odczyty i zapisy. |
_ARM_BARRIER_OSHST |
Zewnętrzne sharable, zapisy tylko. |
Dla __isb wewnętrznych, jest jedynym ograniczeniem, który jest obecnie prawidłowy _ARM_BARRIER_SY; wszystkie inne wartości są zarezerwowane przez architekturę.
instrinsics __iso_volatile_load/magazynu
Te funkcje wewnętrznej wykonać jawnie ładunków i magazynów, które nie są przedmiotem optymalizacje kompilatora.
__int16 __iso_volatile_load16(const volatile __int16 * Location)
__int32 __iso_volatile_load32(const volatile __int32 * Location)
__int64 __iso_volatile_load64(const volatile __int64 * Location)
__int8 __iso_volatile_load8(const volatile __int8 * Location)
void __iso_volatile_store16(volatile __int16 * Location, __int16 Value)
void __iso_volatile_store32(volatile __int32 * Location, __int32 Value)
void __iso_volatile_store64(volatile __int64 * Location, __int64 Value)
void __iso_volatile_store8(volatile __int8 * Location, __int8 Value)
Parametry
Location
Adres lokalizacji w pamięci do odczytu lub zapisu.Value(tylko intrinsics magazynu)
Wartość do zapisu w lokalizacji określonej pamięci.
Wartość zwracana (tylko intrinsics obciążenia)
Wartość określoną przez lokalizacji pamięci Location.
Uwagi
Można użyć __iso_volatile_load8/16/32/64 i __iso_volatile_store8/16/32/64 intrinsics można wykonać jawnie dostęp do pamięci, które nie są przedmiotem optymalizacje kompilatora.Kompilator nie może usunąć, synthetize, lub zmienić kolejność względnym tych operacji, ale nie generuje bariery pamięci niejawne sprzętu.W związku z tym sprzęt może nadal zmienić kolejność dostęp do pamięci zauważalne przez wiele wątków.Ściślej, intrinsics te są równoważne następujących wyrażeń opracowanych pod /volatile:iso.
int a = __iso_volatile_load32(p); // equivalent to: int a = *(const volatile __int32*)p;
__iso_volatile_store32(p, a); // equivalent to: *(volatile __int32*)p = a;
Zwróć uwagę, że intrinsics może zająć lotnych wskaźniki na pomieszczenie lotnych zmiennych.Jednak nie ma wymagań lub zalecenie, aby używać lotnych wskaźniki jako argumenty; Semantyka tych operacji są dokładnie takie same w przypadku używania typu regularne, trwałej.
Aby uzyskać więcej informacji na temat /volatile:iso argumentów wiersza polecenia, zobacz /volatile (interpretacja słowa kluczowego volatile).
_MoveFromCoprocessor, _MoveFromCoprocessor2
Te funkcje wewnętrznej odczytać danych z koprocesory ARM przy użyciu instrukcji coprocessor transferu danych.
int _MoveFromCoprocessor(
unsigned int coproc,
unsigned int opcode1,
unsigned int crn,
unsigned int crm,
unsigned int opcode2
);
int _MoveFromCoprocessor2(
unsigned int coproc,
unsigned int opcode1,
unsigned int crn,
unsigned int crm,
unsigned int opcode2
);
Parametry
coproc
Coprocessor liczbą z zakresu od 0 do 15.opcode1
Kod coprocessor określonych operacji z zakresu od 0 do 7crn
Zarejestruj się coprocessor liczbę z zakresu od 0 do 15 określająca pierwszy argument instrukcji.crm
Zarejestruj się coprocessor liczbę z zakresu od 0 do 15 określająca dodatkowe źródła lub strony lokalizacji docelowej.opcode2
Dodatkowe coprocessor specyficzny kod operacji z zakresu od 0 do 7.
Wartość zwrócona
Wartość, która jest odczytywana coprocessor.
Uwagi
Wartości wszystkie pięć parametrów z tym wewnętrznej musi być stała wyrażeń, które są znane w czasie kompilacji.
_MoveFromCoprocessorużywa instrukcji MRC; _MoveFromCoprocessor2 używa MRC2.Parametry odpowiada bitfields, które są zakodowane bezpośrednio do programu word instrukcji.Interpretacja parametrów jest zależne od coprocessor.Aby uzyskać więcej informacji zobacz Podręcznik dla coprocessor w danym.
_MoveFromCoprocessor64
Odczytuje dane z koprocesory ARM przy użyciu instrukcji coprocessor transferu danych.
unsigned __int64 _MoveFromCoprocessor64(
unsigned int coproc,
unsigned int opcode1,
unsigned int crm,
);
Parametry
coproc
Coprocessor liczbą z zakresu od 0 do 15.opcode1
Kod coprocessor określonych operacji z zakresu od 0 do 15.crm
Zarejestruj się coprocessor liczbę z zakresu od 0 do 15 określająca dodatkowe źródła lub strony lokalizacji docelowej.
Zwraca wartość
Wartość, która jest odczytywana coprocessor.
Uwagi
Wartości wszystkich trzech parametrów z tym wewnętrznej musi być stała wyrażeń, które są znane w czasie kompilacji.
_MoveFromCoprocessor64używa instrukcji MRRC.Parametry odpowiada bitfields, które są zakodowane bezpośrednio do programu word instrukcji.Interpretacja parametrów jest zależne od coprocessor.Aby uzyskać więcej informacji zobacz Podręcznik dla coprocessor w danym.
_MoveToCoprocessor, _MoveToCoprocessor2
Te funkcje wewnętrznej zapisać danych do koprocesory ARM przy użyciu instrukcji coprocessor transferu danych.
void _MoveToCoprocessor(
unsigned int value,
unsigned int coproc,
unsigned int opcode1,
unsigned int crn,
unsigned int crm,
unsigned int opcode2
);
void _MoveToCoprocessor2(
unsigned int value,
unsigned int coproc,
unsigned int opcode1,
unsigned int crn,
unsigned int crm,
unsigned int opcode2
);
Parametry
value
Wartość do zapisania coprocessor.coproc
Coprocessor liczbą z zakresu od 0 do 15.opcode1
Kod coprocessor określonych operacji z zakresu od 0 do 7.crn
Zarejestruj się coprocessor liczbę z zakresu od 0 do 15 określająca pierwszy argument instrukcji.crm
Zarejestruj się coprocessor liczbę z zakresu od 0 do 15 określająca dodatkowe źródła lub strony lokalizacji docelowej.opcode2
Dodatkowe coprocessor specyficzny kod operacji z zakresu od 0 do 7.
Wartość zwrócona
Brak.
Uwagi
Wartości coproc, opcode1, crn, crm, i opcode2 parametry takim wewnętrznej musi być stała wyrażeń, które są znane w czasie kompilacji.
_MoveToCoprocessorużywa instrukcji MCR; _MoveToCoprocessor2 używa MCR2.Parametry odpowiada bitfields, które są zakodowane bezpośrednio do programu word instrukcji.Interpretacja parametrów jest zależne od coprocessor.Aby uzyskać więcej informacji zobacz Podręcznik dla coprocessor w danym.
_MoveToCoprocessor64
Te funkcje wewnętrznej zapisać danych do koprocesory ARM przy użyciu instrukcji coprocessor transferu danych.
void _MoveFromCoprocessor64(
unsigned __int64 value,
unsigned int coproc,
unsigned int opcode1,
unsigned int crm,
);
Parametry
coproc
Coprocessor liczbą z zakresu od 0 do 15.opcode1
Kod coprocessor określonych operacji z zakresu od 0 do 15.crm
Zarejestruj się coprocessor liczbę z zakresu od 0 do 15 określająca dodatkowe źródła lub strony lokalizacji docelowej.
Wartość zwrócona
Brak.
Uwagi
Wartości coproc, opcode1, i crm parametry takim wewnętrznej musi być stała wyrażeń, które są znane w czasie kompilacji.
_MoveFromCoprocessor64używa instrukcji MCRR.Parametry odpowiada bitfields, które są zakodowane bezpośrednio do programu word instrukcji.Interpretacja parametrów jest zależne od coprocessor.Aby uzyskać więcej informacji zobacz Podręcznik dla coprocessor w danym.
ARM Obsługa Intrinsics z innych architektury
W poniższej tabeli przedstawiono intrinsics z innych architektury, które są obsługiwane na platformach ARM.Gdy zachowanie wewnętrznej na ARM różni się od jego zachowania w innych architektur sprzętowych podano dodatkowe informacje.
Nazwa funkcji |
Funkcja prototypu |
---|---|
__assume |
Unieważnij __assume(int) |
__code_seg |
void __code_seg(const char *) |
__debugbreak |
void __cdecl __debugbreak(void) |
__fastfail |
__declspec(noreturn) void __fastfail(unsigned int) |
__nop |
Unieważnij __nop(void)
|
__yield |
Unieważnij __yield(void)
|
_AddressOfReturnAddress |
void * _AddressOfReturnAddress(void) |
_BitScanForward |
niepodpisane char _BitScanForward (bez znaku długo * _Index, bez znaku długo _maska) |
_BitScanReverse |
niepodpisane char _BitScanReverse (bez znaku długo * _Index, bez znaku długo _maska) |
_bittest |
niepodpisane char _bittest (długo stała *, długie) |
_bittestandcomplement |
niepodpisane char _bittestandcomplement (długie *, długie) |
_bittestandreset |
niepodpisane char _bittestandreset (długie *, długie) |
_bittestandset |
niepodpisane char _bittestandset (długie *, długie) |
_byteswap_uint64 |
wartości bez znaku __int64 __cdecl _byteswap_uint64(unsigned __int64) |
_byteswap_ulong |
wartości bez znaku długo __cdecl _byteswap_ulong(unsigned long) |
_byteswap_ushort |
niepodpisane __cdecl krótkie _byteswap_ushort (niepodpisanych krótkiej) |
_disable |
void __cdecl _disable(void)
|
_enable |
void __cdecl _enable(void)
|
_lrotl |
wartości bez znaku długo __cdecl _lrotl (bez znaku długo, int) |
_lrotr |
wartości bez znaku długo __cdecl _lrotr (bez znaku długo, int) |
_ReadBarrier |
Unieważnij _ReadBarrier(void) |
_ReadWriteBarrier |
Unieważnij _ReadWriteBarrier(void) |
_ReturnAddress |
void * _ReturnAddress(void) |
_rotl |
niepodpisane int __cdecl _rotl (_wartość niepodpisanych int, int _Shift) |
_rotl16 |
wartości bez znaku _rotl16 krótkie (niepodpisanych _wartość krótkie, _Shift znak wartości bez znaku) |
_rotl64 |
niepodpisane __int64 __cdecl _rotl64 (_wartość __int64 niepodpisanych, int _Shift) |
_rotl8 |
niepodpisane char _rotl8 (_wartość niepodpisanych char, _Shift znak wartości bez znaku) |
_rotr |
niepodpisane int __cdecl _rotr (_wartość niepodpisanych int, int _Shift) |
_rotr16 |
wartości bez znaku _rotr16 krótkie (niepodpisanych _wartość krótkie, _Shift znak wartości bez znaku) |
_rotr64 |
niepodpisane __int64 __cdecl _rotr64 (_wartość __int64 niepodpisanych, int _Shift) |
_rotr8 |
niepodpisane char _rotr8 (_wartość niepodpisanych char, _Shift znak wartości bez znaku) |
_setjmpex |
int __cdecl _setjmpex(jmp_buf) |
_WriteBarrier |
Unieważnij _WriteBarrier(void) |
[Przejdź do góry]
Zazębione Intrinsics
Zazębione intrinsics to zbiór intrinsics, które służą do wykonywania operacji odczytu i modyfikować zapisu niepodzielnych.Niektóre z nich są wspólne dla wszystkich platform.Są one wymienione oddzielnie w tym miejscu, ponieważ istnieje wiele z nich, ale ich definicje przeważnie są zbędne, dlatego łatwiej pomyśleć, ogólnie warunki.Ich nazw może służyć do uzyskania dokładnego zachowania.
Poniższa tabela zawiera podsumowanie wsparcie ARM intrinsics bez bittest interlocked.Każda komórka w tabeli odpowiada nazwę, która jest uzyskiwany przez dołączenie nazwy operacji w komórce lewej wiersza i nazwa typu w komórce kolumny na wierzchu _Interlocked.Na przykład komórki na przecięciu Xor wiersza i 8 kolumna odpowiada _InterlockedXor8 i jest w pełni obsługiwana.Większość funkcji obsługiwanych oferować te sufiksy opcjonalne: _acq, _rel, i _nf._acq Wskazuje sufiks "licencje" semantycznego i _rel sufiks wskazuje "wersję" semantycznego._nf Lub sufiks "nie ogrodzenia" jest unikatowa dla ARM co opisano w następnej sekcji.
8 |
16 |
32 |
64 |
P |
|
---|---|---|---|---|---|
Dodaj |
Brak |
Brak |
Pełne |
Pełne |
Brak |
I |
Pełne |
Pełne |
Pełne |
Pełne |
Brak |
CompareExchange |
Pełne |
Pełne |
Pełne |
Pełne |
Pełne |
Zmniejsz |
Brak |
Pełne |
Pełne |
Pełne |
Brak |
Exchange |
Częściowe |
Częściowe |
Częściowe |
Częściowe |
Częściowe |
ExchangeAdd |
Pełne |
Pełne |
Pełne |
Pełne |
Brak |
Przyrost |
Brak |
Pełne |
Pełne |
Pełne |
Brak |
Lub |
Pełne |
Pełne |
Pełne |
Pełne |
Brak |
XOR |
Pełne |
Pełne |
Pełne |
Pełne |
Brak |
Klucz:
Pełna: obsługuje zwykły, _acq, _rel, i _nf formularzy.
Częściowe: obsługuje zwykły, _acq, i _nf formularzy.
Brak: nieobsługiwane
Sufiks _nf (nie ogrodzenia)
_nf Lub sufiks "nie ogrodzenia" wskazuje, że operacja zachowuje się jak dowolny rodzaj bariery pamięci.Jest to w odróżnieniu od innych form trzy (zwykły, _acq, i _rel), która wszystkie zachowania konto progu.Jeden wykorzystanie _nf formularzy ma utrzymywać licznika Statystyka, który jest aktualizowany przez wiele wątków jednocześnie, ale której wartość nie jest w przeciwnym razie używany podczas wykonywania wielu wątków.
Lista zazębione Intrinsics
Nazwa funkcji |
Funkcja prototypu |
---|---|
_InterlockedAdd |
długie _InterlockedAdd (długi _volatile *, długie) |
_InterlockedAdd64 |
__int64 _InterlockedAdd64 (__int64 volatile *, __int64) |
_InterlockedAdd64_acq |
__int64 _InterlockedAdd64_acq (__int64 volatile *, __int64) |
_InterlockedAdd64_nf |
__int64 _InterlockedAdd64_nf (__int64 volatile *, __int64) |
_InterlockedAdd64_rel |
__int64 _InterlockedAdd64_rel (__int64 volatile *, __int64) |
_InterlockedAdd_acq |
długie _InterlockedAdd_acq (długo lotnych *, długie) |
_InterlockedAdd_nf |
długie _InterlockedAdd_nf (długo lotnych *, długie) |
_InterlockedAdd_rel |
długie _InterlockedAdd_rel (długo lotnych *, długie) |
_InterlockedAnd |
długie _InterlockedAnd (długo lotnych *, długie) |
_InterlockedAnd16 |
Krótka _InterlockedAnd16 (krótka volatile *, krótki) |
_InterlockedAnd16_acq |
Krótka _InterlockedAnd16_acq (krótka volatile *, krótki) |
_InterlockedAnd16_nf |
Krótka _InterlockedAnd16_nf (krótka volatile *, krótki) |
_InterlockedAnd16_rel |
Krótka _InterlockedAnd16_rel (krótka volatile *, krótki) |
_InterlockedAnd64 |
__int64 _InterlockedAnd64 (__int64 volatile *, __int64) |
_InterlockedAnd64_acq |
__int64 _InterlockedAnd64_acq (__int64 volatile *, __int64) |
_InterlockedAnd64_nf |
__int64 _InterlockedAnd64_nf (__int64 volatile *, __int64) |
_InterlockedAnd64_rel |
__int64 _InterlockedAnd64_rel (__int64 volatile *, __int64) |
_InterlockedAnd8 |
znak _InterlockedAnd8 (volatile znak *, char) |
_InterlockedAnd8_acq |
znak _InterlockedAnd8_acq (volatile znak *, char) |
_InterlockedAnd8_nf |
znak _InterlockedAnd8_nf (volatile znak *, char) |
_InterlockedAnd8_rel |
znak _InterlockedAnd8_rel (volatile znak *, char) |
_InterlockedAnd_acq |
długie _InterlockedAnd_acq (długo lotnych *, długie) |
_InterlockedAnd_nf |
długie _InterlockedAnd_nf (długo lotnych *, długie) |
_InterlockedAnd_rel |
długie _InterlockedAnd_rel (długo lotnych *, długie) |
_InterlockedCompareExchange |
długie __cdecl _InterlockedCompareExchange (długo lotnych *, długie, długie) |
_InterlockedCompareExchange16 |
Krótka _InterlockedCompareExchange16 (krótka volatile *, krótkie, krótka) |
_InterlockedCompareExchange16_acq |
Krótka _InterlockedCompareExchange16_acq (krótka volatile *, krótkie, krótka) |
_InterlockedCompareExchange16_nf |
Krótka _InterlockedCompareExchange16_nf (krótka volatile *, krótkie, krótka) |
_InterlockedCompareExchange16_rel |
Krótka _InterlockedCompareExchange16_rel (krótka volatile *, krótkie, krótka) |
_InterlockedCompareExchange64 |
__int64 _InterlockedCompareExchange64 (__int64 volatile *, __int64, __int64) |
_InterlockedCompareExchange64_acq |
__int64 _InterlockedCompareExchange64_acq (__int64 volatile *, __int64, __int64) |
_InterlockedCompareExchange64_nf |
__int64 _InterlockedCompareExchange64_nf (__int64 volatile *, __int64, __int64) |
_InterlockedCompareExchange64_rel |
__int64 _InterlockedCompareExchange64_rel (__int64 volatile *, __int64, __int64) |
_InterlockedCompareExchange8 |
znak _InterlockedCompareExchange8 (volatile znak *, char, znak) |
_InterlockedCompareExchange8_acq |
znak _InterlockedCompareExchange8_acq (volatile znak *, char, znak) |
_InterlockedCompareExchange8_nf |
znak _InterlockedCompareExchange8_nf (volatile znak *, char, znak) |
_InterlockedCompareExchange8_rel |
znak _InterlockedCompareExchange8_rel (volatile znak *, char, znak) |
_InterlockedCompareExchangePointer |
void * _InterlockedCompareExchangePointer (void * volatile *, void *, void *) |
_InterlockedCompareExchangePointer_acq |
void * _InterlockedCompareExchangePointer_acq (void * volatile *, void *, void *) |
_InterlockedCompareExchangePointer_nf |
void * _InterlockedCompareExchangePointer_nf (void * volatile *, void *, void *) |
_InterlockedCompareExchangePointer_rel |
void * _InterlockedCompareExchangePointer_rel (void * volatile *, void *, void *) |
_InterlockedCompareExchange_acq |
długie _InterlockedCompareExchange_acq (długo lotnych *, długie, długie) |
_InterlockedCompareExchange_nf |
długie _InterlockedCompareExchange_nf (długo lotnych *, długie, długie) |
_InterlockedCompareExchange_rel |
długie _InterlockedCompareExchange_rel (długo lotnych *, długie, długie) |
_InterlockedDecrement |
długie __cdecl _InterlockedDecrement(long volatile *) |
_InterlockedDecrement16 |
Krótka _InterlockedDecrement16(short volatile *) |
_InterlockedDecrement16_acq |
Krótka _InterlockedDecrement16_acq(short volatile *) |
_InterlockedDecrement16_nf |
Krótka _InterlockedDecrement16_nf(short volatile *) |
_InterlockedDecrement16_rel |
Krótka _InterlockedDecrement16_rel(short volatile *) |
_InterlockedDecrement64 |
__int64 _InterlockedDecrement64(__int64 volatile *) |
_InterlockedDecrement64_acq |
__int64 _InterlockedDecrement64_acq(__int64 volatile *) |
_InterlockedDecrement64_nf |
__int64 _InterlockedDecrement64_nf(__int64 volatile *) |
_InterlockedDecrement64_rel |
__int64 _InterlockedDecrement64_rel(__int64 volatile *) |
_InterlockedDecrement_acq |
długi _InterlockedDecrement_acq(long volatile *) |
_InterlockedDecrement_nf |
długi _InterlockedDecrement_nf(long volatile *) |
_InterlockedDecrement_rel |
długi _InterlockedDecrement_rel(long volatile *) |
_InterlockedExchange |
długie __cdecl _InterlockedExchange (długo lotnych * _Target długie) |
_InterlockedExchange16 |
Krótka _InterlockedExchange16 (krótka volatile * _Target krótka) |
_InterlockedExchange16_acq |
Krótka _InterlockedExchange16_acq (krótka volatile * _Target krótka) |
_InterlockedExchange16_nf |
Krótka _InterlockedExchange16_nf (krótka volatile * _Target krótka) |
_InterlockedExchange64 |
__int64 _InterlockedExchange64 (__int64 volatile * _Target, __int64) |
_InterlockedExchange64_acq |
__int64 _InterlockedExchange64_acq (__int64 volatile * _Target, __int64) |
_InterlockedExchange64_nf |
__int64 _InterlockedExchange64_nf (__int64 volatile * _Target, __int64) |
_InterlockedExchange8 |
znak _InterlockedExchange8 (char volatile * _Target, znak) |
_InterlockedExchange8_acq |
znak _InterlockedExchange8_acq (char volatile * _Target, znak) |
_InterlockedExchange8_nf |
znak _InterlockedExchange8_nf (char volatile * _Target, znak) |
_InterlockedExchangeAdd |
długie __cdecl _InterlockedExchangeAdd (długo lotnych *, długie) |
_InterlockedExchangeAdd16 |
Krótka _InterlockedExchangeAdd16 (krótka volatile *, krótki) |
_InterlockedExchangeAdd16_acq |
Krótka _InterlockedExchangeAdd16_acq (krótka volatile *, krótki) |
_InterlockedExchangeAdd16_nf |
Krótka _InterlockedExchangeAdd16_nf (krótka volatile *, krótki) |
_InterlockedExchangeAdd16_rel |
Krótka _InterlockedExchangeAdd16_rel (krótka volatile *, krótki) |
_InterlockedExchangeAdd64 |
__int64 _InterlockedExchangeAdd64 (__int64 volatile *, __int64) |
_InterlockedExchangeAdd64_acq |
__int64 _InterlockedExchangeAdd64_acq (__int64 volatile *, __int64) |
_InterlockedExchangeAdd64_nf |
__int64 _InterlockedExchangeAdd64_nf (__int64 volatile *, __int64) |
_InterlockedExchangeAdd64_rel |
__int64 _InterlockedExchangeAdd64_rel (__int64 volatile *, __int64) |
_InterlockedExchangeAdd8 |
znak _InterlockedExchangeAdd8 (volatile znak *, char) |
_InterlockedExchangeAdd8_acq |
znak _InterlockedExchangeAdd8_acq (volatile znak *, char) |
_InterlockedExchangeAdd8_nf |
znak _InterlockedExchangeAdd8_nf (volatile znak *, char) |
_InterlockedExchangeAdd8_rel |
znak _InterlockedExchangeAdd8_rel (volatile znak *, char) |
_InterlockedExchangeAdd_acq |
długie _InterlockedExchangeAdd_acq (długo lotnych *, długie) |
_InterlockedExchangeAdd_nf |
długie _InterlockedExchangeAdd_nf (długo lotnych *, długie) |
_InterlockedExchangeAdd_rel |
długie _InterlockedExchangeAdd_rel (długo lotnych *, długie) |
_InterlockedExchangePointer |
void * _InterlockedExchangePointer (void * volatile * _Target void *) |
_InterlockedExchangePointer_acq |
void * _InterlockedExchangePointer_acq (void * volatile * _Target void *) |
_InterlockedExchangePointer_nf |
void * _InterlockedExchangePointer_nf (void * volatile * _Target void *) |
_InterlockedExchange_acq |
długie _InterlockedExchange_acq (długo lotnych * _Target długie) |
_InterlockedExchange_nf |
długie _InterlockedExchange_nf (długo lotnych * _Target długie) |
_InterlockedIncrement |
długie __cdecl _InterlockedIncrement(long volatile *) |
_InterlockedIncrement16 |
Krótka _InterlockedIncrement16(short volatile *) |
_InterlockedIncrement16_acq |
Krótka _InterlockedIncrement16_acq(short volatile *) |
_InterlockedIncrement16_nf |
Krótka _InterlockedIncrement16_nf(short volatile *) |
_InterlockedIncrement16_rel |
Krótka _InterlockedIncrement16_rel(short volatile *) |
_InterlockedIncrement64 |
__int64 _InterlockedIncrement64(__int64 volatile *) |
_InterlockedIncrement64_acq |
__int64 _InterlockedIncrement64_acq(__int64 volatile *) |
_InterlockedIncrement64_nf |
__int64 _InterlockedIncrement64_nf(__int64 volatile *) |
_InterlockedIncrement64_rel |
__int64 _InterlockedIncrement64_rel(__int64 volatile *) |
_InterlockedIncrement_acq |
długi _InterlockedIncrement_acq(long volatile *) |
_InterlockedIncrement_nf |
długi _InterlockedIncrement_nf(long volatile *) |
_InterlockedIncrement_rel |
długi _InterlockedIncrement_rel(long volatile *) |
_InterlockedOr |
długie _InterlockedOr (długo lotnych *, długie) |
_InterlockedOr16 |
Krótka _InterlockedOr16 (krótka volatile *, krótki) |
_InterlockedOr16_acq |
Krótka _InterlockedOr16_acq (krótka volatile *, krótki) |
_InterlockedOr16_nf |
Krótka _InterlockedOr16_nf (krótka volatile *, krótki) |
_InterlockedOr16_rel |
Krótka _InterlockedOr16_rel (krótka volatile *, krótki) |
_InterlockedOr64 |
__int64 _InterlockedOr64 (__int64 volatile *, __int64) |
_InterlockedOr64_acq |
__int64 _InterlockedOr64_acq (__int64 volatile *, __int64) |
_InterlockedOr64_nf |
__int64 _InterlockedOr64_nf (__int64 volatile *, __int64) |
_InterlockedOr64_rel |
__int64 _InterlockedOr64_rel (__int64 volatile *, __int64) |
_InterlockedOr8 |
znak _InterlockedOr8 (volatile znak *, char) |
_InterlockedOr8_acq |
znak _InterlockedOr8_acq (volatile znak *, char) |
_InterlockedOr8_nf |
znak _InterlockedOr8_nf (volatile znak *, char) |
_InterlockedOr8_rel |
znak _InterlockedOr8_rel (volatile znak *, char) |
_InterlockedOr_acq |
długie _InterlockedOr_acq (długo lotnych *, długie) |
_InterlockedOr_nf |
długie _InterlockedOr_nf (długo lotnych *, długie) |
_InterlockedOr_rel |
długie _InterlockedOr_rel (długo lotnych *, długie) |
_InterlockedXor |
długie _InterlockedXor (długo lotnych *, długie) |
_InterlockedXor16 |
Krótka _InterlockedXor16 (krótka volatile *, krótki) |
_InterlockedXor16_acq |
Krótka _InterlockedXor16_acq (krótka volatile *, krótki) |
_InterlockedXor16_nf |
Krótka _InterlockedXor16_nf (krótka volatile *, krótki) |
_InterlockedXor16_rel |
Krótka _InterlockedXor16_rel (krótka volatile *, krótki) |
_InterlockedXor64 |
__int64 _InterlockedXor64 (__int64 volatile *, __int64) |
_InterlockedXor64_acq |
__int64 _InterlockedXor64_acq (__int64 volatile *, __int64) |
_InterlockedXor64_nf |
__int64 _InterlockedXor64_nf (__int64 volatile *, __int64) |
_InterlockedXor64_rel |
__int64 _InterlockedXor64_rel (__int64 volatile *, __int64) |
_InterlockedXor8 |
znak _InterlockedXor8 (volatile znak *, char) |
_InterlockedXor8_acq |
znak _InterlockedXor8_acq (volatile znak *, char) |
_InterlockedXor8_nf |
znak _InterlockedXor8_nf (volatile znak *, char) |
_InterlockedXor8_rel |
znak _InterlockedXor8_rel (volatile znak *, char) |
_InterlockedXor_acq |
długie _InterlockedXor_acq (długo lotnych *, długie) |
_InterlockedXor_nf |
długie _InterlockedXor_nf (długo lotnych *, długie) |
_InterlockedXor_rel |
długie _InterlockedXor_rel (długo lotnych *, długie) |
[Przejdź do góry]
_interlockedbittest Intrinsics
Intrinsics bittest zazębione zwykły są wspólne dla wszystkich platform.Dodaje ARM _acq, _rel, i _nf wariantów, które właśnie modyfikować semantyki bariery operacji, zgodnie z opisem w _nf (nie ogrodzenia) sufiksu wcześniej w tym artykule.
Nazwa funkcji |
Funkcja prototypu |
---|---|
_interlockedbittestandreset |
niepodpisane char _interlockedbittestandreset (długo lotnych *, długie) |
_interlockedbittestandreset_acq |
niepodpisane char _interlockedbittestandreset_acq (długo lotnych *, długie) |
_interlockedbittestandreset_nf |
niepodpisane char _interlockedbittestandreset_nf (długo lotnych *, długie) |
_interlockedbittestandreset_rel |
niepodpisane char _interlockedbittestandreset_rel (długo lotnych *, długie) |
_interlockedbittestandset |
niepodpisane char _interlockedbittestandset (długo lotnych *, długie) |
_interlockedbittestandset_acq |
niepodpisane char _interlockedbittestandset_acq (długo lotnych *, długie) |
_interlockedbittestandset_nf |
niepodpisane char _interlockedbittestandset_nf (długo lotnych *, długie) |
_interlockedbittestandset_rel |
niepodpisane char _interlockedbittestandset_rel (długo lotnych *, długie) |
[Przejdź do góry]
Zobacz też
Informacje
Funkcje wewnętrzne kompilatora