Vnitřní objekty serveru PAŽE
Kompilátor Visual C++ zpřístupní následující vnitřní na architektuře ARM.Další informace o ARM, viz ARM architektura Reference Manual a ARM Assembler nástroje Průvodce na webu informační středisko ARM.
NEÓNOVÁ
Rozšíření sady NEÓNOVÁ vektorové instrukce pro ARM zajišťuje více dat jedné instrukce (SIMD), které se podobají v MMX a SSE vektorové instrukce sady, které jsou společné pro architekturu procesorů x 86 a x 64.
NEÓNOVÁ vnitřní jsou podporovány, jak je uvedeno v souboru hlaviček arm_neon.h.Podpora kompilátoru Visual C++ pro vnitřní NEÓNOVÁ podobá se ARM kompilátor, která je popsána v příloze G toolchain ARM kompilátoru, kompilátor odkaz na verzi 4.1 na webu informační středisko ARM.
Hlavní rozdíl mezi kompilátor Visual C++ a kompilátoru ARM je, že kompilátor Visual C++ přidá _ex varianty vldX a vstX vektorové načíst a uložit pokyny._ex Varianty přijmout další parametr, který určuje zarovnání ukazatele argument, ale jsou jinak totožné s jejich non-_ex protějšky.
Vnitřní seznam specifických ARM
Název funkce |
Instrukce |
Prototyp funkce |
---|---|---|
_arm_smlal |
SMLAL |
_arm_smlal __int64 (__int64 _RdHiLo, int _Rn, int _Rm) |
_arm_umlal |
UMLAL |
_arm_umlal __int64 bez znaménka (unsigned __int64 _RdHiLo, _Rn unsigned int, unsigned int _Rm) |
_arm_clz |
CLZ |
unsigned int _arm_clz (unsigned int _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 (int _Rn, int _Rm) |
_arm_sadd8 |
SADD8 |
int _arm_sadd8 (int _Rn, 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 (int _Rn, int _Rm) |
_arm_ssub8 |
SSUB8 |
int _arm_ssub8 (int _Rn, int _Rm) |
_arm_shadd16 |
SHADD16 |
int _arm_shadd16 (int _Rn, int _Rm) |
_arm_shadd8 |
SHADD8 |
int _arm_shadd8 (int _Rn, 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 (int _Rn, int _Rm) |
_arm_shsub8 |
SHSUB8 |
int _arm_shsub8 (int _Rn, int _Rm) |
_arm_qadd16 |
QADD16 |
int _arm_qadd16 (int _Rn, int _Rm) |
_arm_qadd8 |
QADD8 |
int _arm_qadd8 (int _Rn, 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 (int _Rn, int _Rm) |
_arm_qsub8 |
QSUB8 |
int _arm_qsub8 (int _Rn, int _Rm) |
_arm_uadd16 |
UADD16 |
int _arm_uadd16, bez znaménka (unsigned int _Rn, unsigned int _Rm) |
_arm_uadd8 |
UADD8 |
int _arm_uadd8, bez znaménka (unsigned int _Rn, unsigned int _Rm) |
_arm_uasx |
UASX |
unsigned int _arm_uasx (_Rn unsigned int, unsigned int _Rm) |
_arm_usax |
USAX |
unsigned int _arm_usax (_Rn unsigned int, unsigned int _Rm) |
_arm_usub16 |
USUB16 |
int _arm_usub16, bez znaménka (unsigned int _Rn, unsigned int _Rm) |
_arm_usub8 |
USUB8 |
int _arm_usub8, bez znaménka (unsigned int _Rn, unsigned int _Rm) |
_arm_uhadd16 |
UHADD16 |
int _arm_uhadd16, bez znaménka (unsigned int _Rn, unsigned int _Rm) |
_arm_uhadd8 |
UHADD8 |
int _arm_uhadd8, bez znaménka (unsigned int _Rn, unsigned int _Rm) |
_arm_uhasx |
UHASX |
unsigned int _arm_uhasx (_Rn unsigned int, unsigned int _Rm) |
_arm_uhsax |
UHSAX |
unsigned int _arm_uhsax (_Rn unsigned int, unsigned int _Rm) |
_arm_uhsub16 |
UHSUB16 |
int _arm_uhsub16, bez znaménka (unsigned int _Rn, unsigned int _Rm) |
_arm_uhsub8 |
UHSUB8 |
int _arm_uhsub8, bez znaménka (unsigned int _Rn, unsigned int _Rm) |
_arm_uqadd16 |
UQADD16 |
int _arm_uqadd16, bez znaménka (unsigned int _Rn, unsigned int _Rm) |
_arm_uqadd8 |
UQADD8 |
int _arm_uqadd8, bez znaménka (unsigned int _Rn, unsigned int _Rm) |
_arm_uqasx |
UQASX |
unsigned int _arm_uqasx (_Rn unsigned int, unsigned int _Rm) |
_arm_uqsax |
UQSAX |
unsigned int _arm_uqsax (_Rn unsigned int, unsigned int _Rm) |
_arm_uqsub16 |
UQSUB16 |
int _arm_uqsub16, bez znaménka (unsigned int _Rn, unsigned int _Rm) |
_arm_uqsub8 |
UQSUB8 |
int _arm_uqsub8, bez znaménka (unsigned int _Rn, unsigned int _Rm) |
_arm_sxtab |
SXTAB |
int _arm_sxtab (int _Rn, int _Rm, unsigned int _Rotation) |
_arm_sxtab16 |
SXTAB16 |
int _arm_sxtab16 (int _Rn, int _Rm, nepodepsané int _Rotation) |
_arm_sxtah |
SXTAH |
int _arm_sxtah (int _Rn, int _Rm, unsigned int _Rotation) |
_arm_uxtab |
UXTAB |
unsigned int _arm_uxtab (unsigned int _Rn, _Rm unsigned int, unsigned int _Rotation) |
_arm_uxtab16 |
UXTAB16 |
nepodepsané int _arm_uxta16b (bez znaménka, int _Rn, unsigned int _Rm, unsigned int _Rotation) |
_arm_uxtah |
UXTAH |
unsigned int _arm_uxtah (unsigned int _Rn, _Rm unsigned int, unsigned int _Rotation) |
_arm_sxtb |
SXTB |
int _arm_sxtb (int _Rn, unsigned int _Rotation) |
_arm_sxtb16 |
SXTB16 |
int _arm_sxtb16 (_Rn int, unsigned int _Rotation) |
_arm_sxth |
SXTH |
int _arm_sxth (int _Rn, unsigned int _Rotation) |
_arm_uxtb |
UXTB |
unsigned int _arm_uxtb (_Rn unsigned int, unsigned int _Rotation) |
_arm_uxtb16 |
UXTB16 |
int _arm_uxtb16, bez znaménka (unsigned int _Rn, unsigned int _Rotation) |
_arm_uxth |
UXTH |
unsigned int _arm_uxth (_Rn unsigned int, unsigned int _Rotation) |
_arm_pkhbt |
PKHBT |
int _arm_pkhbt (int _Rn, int _Rm, unsigned int _Lsl_imm) |
_arm_pkhtb |
PKHTB |
int _arm_pkhtb (int _Rn, int _Rm, unsigned int _Asr_imm) |
_arm_usad8 |
USAD8 |
int _arm_usad8, bez znaménka (unsigned int _Rn, unsigned int _Rm) |
_arm_usada8 |
USADA8 |
nepodepsané int _arm_usada8 (bez znaménka, int _Rn, unsigned int _Rm, unsigned int _Ra) |
_arm_ssat |
SSAT |
int _arm_ssat (unsigned int _Sat_imm, _int, _Rn, _ARMINTR_SHIFT_T _Shift_type, unsigned int _Shift_imm) |
_arm_usat |
USAT |
int _arm_usat (unsigned int _Sat_imm, _int, _Rn, _ARMINTR_SHIFT_T _Shift_type, unsigned int _Shift_imm) |
_arm_ssat16 |
SSAT16 |
int _arm_ssat16 (unsigned int _Sat_imm, _int _Rn) |
_arm_usat16 |
USAT16 |
int _arm_usat16 (unsigned int _Sat_imm, _int _Rn) |
_arm_rev |
REV |
unsigned int _arm_rev (unsigned int _Rm) |
_arm_rev16 |
REV16 |
nepodepsané int _arm_rev16 (int _Rm, bez znaménka) |
_arm_revsh |
REVSH |
unsigned int _arm_revsh (unsigned int _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 |
Nepodepsaný __int64 _arm_umull (_Rn unsigned int, unsigned int _Rm) |
_arm_umaal |
UMAAL |
Nepodepsaný __int64 _arm_umaal (_RdLo unsigned int, unsigned int _RdHi, _Rn unsigned int, unsigned int _Rm) |
_arm_bfc |
BFC |
unsigned int _arm_bfc (unsigned int _Rd, _Lsb unsigned int, unsigned int _Width) |
_arm_bfi |
BFI |
unsigned int _arm_bfi (_Rd unsigned int, unsigned int _Rn, _Lsb unsigned int, unsigned int _Width) |
_arm_rbit |
RBIT |
unsigned int _arm_rbit (unsigned int _Rm) |
_arm_sbfx |
SBFX |
int _arm_sbfx (int _Rn, _Lsb unsigned int, unsigned int _Width) |
_arm_ubfx |
UBFX |
unsigned int _arm_ubfx (unsigned int _Rn, _Lsb unsigned int, unsigned int _Width) |
_arm_sdiv |
SDIV |
int _arm_sdiv (int _Rn, int _Rm) |
_arm_udiv |
UDIV |
unsigned int _arm_udiv (_Rn unsigned int, unsigned int _Rm) |
__cps |
CPS |
void __cps (unsigned int _Ops, _Flags unsigned int, unsigned int _Mode) |
__dmb |
MB |
void __dmb (int nepodepsané _Type) Vloží operaci bariéry paměti do proudu instrukce.Parametr _Type Určuje typ omezení, který vynucuje bariéry. Další informace o možnostech omezení, které lze vynutit, viz Omezení paměti bariéry. |
__dsb |
DSB |
void __dsb (unsigned int _Type) Vloží operaci bariéry paměti do proudu instrukce.Parametr _Type Určuje typ omezení, který vynucuje bariéry. Další informace o možnostech omezení, které lze vynutit, viz Omezení paměti bariéry. |
__isb |
ISB |
void __isb (unsigned int _Type) Vloží operaci bariéry paměti do proudu instrukce.Parametr _Type Určuje typ omezení, který vynucuje bariéry. Další informace o možnostech omezení, které lze vynutit, viz Omezení paměti bariéry. |
__emit |
void __emit (opcode __int32 bez znaménka) Vloží zadaný instrukce do proudu pokynů, který je výstupem kompilátoru. Hodnota opcode musí být konstantní výraz, který je známý v době kompilace.Velikost word pokyn je 16 bitů a nejvýznamnější 16 bitů s opcode jsou ignorovány. Kompilátor nesnaží se interpretovat obsah opcode a před provedením vložené instrukce nezaručuje stav procesoru nebo paměti. Kompilátor předpokládá, že státy procesoru a paměti jsou beze změny po provedení vložené instrukce.Pokyny, které mění stav proto může mít nepříznivý vliv na normální kód, který je generován kompilátorem. Z tohoto důvodu použít emit pouze, chcete-li vložit pokyny, které ovlivňují stav procesoru, který kompilátor nezpracovává obvykle – například koprocesoru stát – nebo chcete-li implementovat funkce, které jsou deklarovány pomocí declspec(naked). |
|
__hvc |
HVC |
unsigned int __hvc (unsigned int,...) |
__iso_volatile_load16 |
__int16 __iso_volatile_load16 (const těkavých __int16 *) Další informace naleznete v tématu instrinsics __iso_volatile_load/úložiště. |
|
__iso_volatile_load32 |
__int32 __iso_volatile_load32 (const těkavých __int32 *) Další informace naleznete v tématu instrinsics __iso_volatile_load/úložiště. |
|
__iso_volatile_load64 |
__int64 __iso_volatile_load64 (const těkavých __int64 *) Další informace naleznete v tématu instrinsics __iso_volatile_load/úložiště. |
|
__iso_volatile_load8 |
__int8 __iso_volatile_load8 (const těkavých __int8 *) Další informace naleznete v tématu instrinsics __iso_volatile_load/úložiště. |
|
__iso_volatile_store16 |
void __iso_volatile_store16 (těkavých __int16 *, __int16) Další informace naleznete v tématu instrinsics __iso_volatile_load/úložiště. |
|
__iso_volatile_store32 |
void __iso_volatile_store32 (těkavých __int32 *, __int32) Další informace naleznete v tématu instrinsics __iso_volatile_load/úložiště. |
|
__iso_volatile_store64 |
void __iso_volatile_store64 (těkavé __int64 *, __int64) Další informace naleznete v tématu instrinsics __iso_volatile_load/úložiště. |
|
__iso_volatile_store8 |
void __iso_volatile_store8 (těkavých __int8 *, __int8) Další informace naleznete v tématu instrinsics __iso_volatile_load/úložiště. |
|
__ldrexd |
LDREXD |
__int64 __ldrexd (const těkavých __int64 *) |
__prefetch |
PLD |
void __cdecl __prefetch(const void *) Poskytuje PLD paměti pokyn systému, že paměť nebo blíží hodnotě zadané adresy, které mohly být přístupné brzy.Některé systémy mohou zvolit Optimalizovat přístupovou této paměti pro zvýšení výkonu za běhu.Však z C++ language hlediska, funkce nemá žádné pozorovatelné účinek a může dělat nic vůbec. |
__rdpmccntr64 |
Nepodepsaný __int64 __rdpmccntr64(void) |
|
__sev |
SEV |
void __sev(void) |
__static_assert |
void __static_assert (int, const char *) |
|
__swi |
SVC |
unsigned int __swi (unsigned int,...) |
__trap |
BKPT |
int __trap (int,...) |
__wfe |
WFE |
void __wfe(void) |
__wfi |
WFI |
void __wfi(void) |
_AddSatInt |
QADD |
int _AddSatInt (int, int) |
_CopyDoubleFromInt64 |
Dvojitý _CopyDoubleFromInt64(__int64) |
|
_CopyFloatFromInt32 |
plovoucí _CopyFloatFromInt32(__int32) |
|
_CopyInt32FromFloat |
__int32 _CopyInt32FromFloat(float) |
|
_CopyInt64FromDouble |
__int64 _CopyInt64FromDouble(double) |
|
_CountLeadingOnes |
unsigned int _CountLeadingOnes(unsigned long) |
|
_CountLeadingOnes64 |
unsigned int _CountLeadingOnes64(unsigned __int64) |
|
_CountLeadingSigns |
unsigned int _CountLeadingSigns(long) |
|
_CountLeadingSigns64 |
unsigned int _CountLeadingSigns64(__int64) |
|
_CountLeadingZeros |
unsigned int _CountLeadingZeros(unsigned long) |
|
_CountLeadingZeros64 |
unsigned int _CountLeadingZeros64(unsigned __int64) |
|
_CountOneBits |
unsigned int _CountOneBits(unsigned long) |
|
_CountOneBits64 |
unsigned int _CountOneBits64(unsigned __int64) |
|
_DAddSatInt |
QDADD |
int _DAddSatInt (int, int) |
_DSubSatInt |
QDSUB |
int _DSubSatInt (int, int) |
_isunordered |
int _isunordered (double, double) |
|
_isunorderedf |
int _isunorderedf (float, float) |
|
_MoveFromCoprocessor |
FORMÁTU MRC |
unsigned int _MoveFromCoprocessor (unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) Načte data z koprocesoru ARM pomocí pokynů pro přenos dat koprocesoru.Další informace získáte v tématu _MoveFromCoprocessor, _MoveFromCoprocessor2. |
_MoveFromCoprocessor2 |
MRC2 |
nepodepsané int _MoveFromCoprocessor2 (bez znaménka, int, unsigned int, unsigned int, unsigned int, unsigned int) Načte data z koprocesoru ARM pomocí pokynů pro přenos dat koprocesoru.Další informace získáte v tématu _MoveFromCoprocessor, _MoveFromCoprocessor2. |
_MoveFromCoprocessor64 |
MRRC |
nepodepsané __int64 _MoveFromCoprocessor64 (bez znaménka, int, unsigned int, unsigned int) Načte data z koprocesoru ARM pomocí pokynů pro přenos dat koprocesoru.Další informace získáte v tématu _MoveFromCoprocessor64. |
_MoveToCoprocessor |
MCR |
void _MoveToCoprocessor (unsigned int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) Načte data z koprocesoru ARM pomocí pokynů pro přenos dat koprocesoru.Další informace získáte v tématu _MoveToCoprocessor, _MoveToCoprocessor2. |
_MoveToCoprocessor2 |
MCR2 |
void _MoveToCoprocessor2 (bez znaménka, int, unsigned int, unsigned int, unsigned int, unsigned int, unsigned int) Načte data z koprocesoru ARM pomocí pokynů pro přenos dat koprocesoru.Další informace získáte v tématu _MoveToCoprocessor, _MoveToCoprocessor2. |
_MoveToCoprocessor64 |
MCRR |
void _MoveToCoprocessor64 (nepodepsané __int64, unsigned int, unsigned int, unsigned int) Načte data z koprocesoru ARM pomocí pokynů pro přenos dat koprocesoru.Další informace získáte v tématu _MoveToCoprocessor64. |
_MulHigh |
dlouhé _MulHigh (dlouhé, dlouhé) |
|
_MulUnsignedHigh |
nepodepsané dlouhé _MulUnsignedHigh (unsigned long, unsigned long) |
|
_ReadBankedReg |
PANÍ |
int _ReadBankedReg (int _Reg) |
_ReadStatusReg |
PANÍ |
int _ReadStatusReg(int) |
_SubSatInt |
QSUB |
int _SubSatInt (int, int) |
_WriteBankedReg |
ODDÍL MSR |
void _WriteBankedReg (int _Value, int _Reg) |
_WriteStatusReg |
ODDÍL MSR |
void _WriteStatusReg (int, int, int) |
[NEÓNOVÁ]
Omezení paměti bariéry
Vnitřní funkce __dmb (datové paměti bariéry), __dsb (bariéry synchronizace dat), a __isb (instrukce synchronizace bariéry) použijte následující předdefinované hodnoty pro určení omezení paměti bariéry sdílení domény a druh přístupu, které jsou ovlivněny operací.
Hodnota omezení |
Description |
---|---|
_ARM_BARRIER_SY |
Celého systému, čtení a zápisy. |
_ARM_BARRIER_ST |
Úplný systém pouze zápisy. |
_ARM_BARRIER_ISH |
Vnitřní sdílet, čtení a zápisy. |
_ARM_BARRIER_ISHST |
Vnitřní sdílet, zápisy pouze. |
_ARM_BARRIER_NSH |
Non sdílet čte a zapisuje. |
_ARM_BARRIER_NSHST |
Non sdílet zapisuje pouze. |
_ARM_BARRIER_OSH |
Vnější sdílet, čtení a zápisy. |
_ARM_BARRIER_OSHST |
Vnější sdílet, zápisy pouze. |
U __isb vnitřní, jediné omezení, která je aktuálně platný je _ARM_BARRIER_SY; všechny ostatní hodnoty jsou vyhrazeny architektury.
instrinsics __iso_volatile_load/úložiště
Tyto vnitřní funkce explicitně provádět zatížení a obchody, které nejsou předmětem optimalizace kompilátoru.
__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
Adresa paměťové místo číst nebo zapisovat.Value(platí pouze pro vnitřní úložiště)
Hodnota k zápisu do umístění zadaného paměti.
Vrácená hodnota (platí pouze pro vnitřní zatížení)
Hodnota umístění v paměti, který je určen Location.
Poznámky
Můžete použít __iso_volatile_load8/16/32/64 a __iso_volatile_store8/16/32/64 vnitřní explicitně provádět paměti přístupy, které nejsou předmětem optimalizace kompilátoru.Kompilátor nemůže odstranit, synthetize, nebo změnit relativní pořadí těchto operací, ale negeneruje překážek paměti implicitní hardwaru.Hardware proto stále může uspořádání přístupů pozorovatelným paměti přes více vláken.Přesněji řečeno, tyto vnitřní odpovídají následující výrazy jako je program přeložen v /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;
Všimněte si, že vnitřní podpory trvat těkavých ukazatele přizpůsobená těkavých proměnné.Existuje však žádné požadavky nebo doporučení použití těkavých ukazatele jako argumenty; Sémantika těchto operací se přesně shodují v případě, že je použit typ pravidelné a stálé.
Další informace o /volatile:iso argument příkazového řádku, viz /volatile (Interpretace klíčového slova volatile).
_MoveFromCoprocessor, _MoveFromCoprocessor2
Tyto vnitřní funkce Číst data z ARM coprocessors pomocí pokynů pro přenos dat koprocesoru.
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
Koprocesoru číslo v rozsahu 0 až 15.opcode1
Specifické koprocesoru opcode v rozsahu 0 až 7crn
Koprocesoru zaregistrovat číslo v rozsahu 0 až 15, která určuje první operand, který instrukce.crm
Koprocesoru zaregistrovat číslo v rozsahu 0 až 15 určující další zdrojové nebo cílové operand.opcode2
Další specifické koprocesoru opcode v rozsahu 0 až 7.
Vrácená hodnota
Hodnota, která je čten koprocesoru.
Poznámky
Hodnoty všech pět parametrů tomto vnitřních musí být konstantní výrazy, které jsou známy v době kompilace.
_MoveFromCoprocessorpoužívá formátu MRC výuku; _MoveFromCoprocessor2používá MRC2.Parametry odpovídají bitová pole, které jsou kódovány přímo do aplikace word instrukce.Interpretace parametrů je závislá na koprocesoru.Další informace naleznete v příručce pro dotyčné koprocesoru.
_MoveFromCoprocessor64
Načte data z ARM coprocessors pomocí pokynů pro přenos dat koprocesoru.
unsigned __int64 _MoveFromCoprocessor64(
unsigned int coproc,
unsigned int opcode1,
unsigned int crm,
);
Parametry
coproc
Koprocesoru číslo v rozsahu 0 až 15.opcode1
Specifické koprocesoru opcode v rozsahu 0 až 15.crm
Koprocesoru zaregistrovat číslo v rozsahu 0 až 15 určující další zdrojové nebo cílové operand.
Vrátí hodnotu
Hodnota, která je čten koprocesoru.
Poznámky
Hodnoty všech tří parametrů tomto vnitřních musí být konstantní výrazy, které jsou známy v době kompilace.
_MoveFromCoprocessor64používá instrukce MRRC.Parametry odpovídají bitová pole, které jsou kódovány přímo do aplikace word instrukce.Interpretace parametrů je závislá na koprocesoru.Další informace naleznete v příručce pro dotyčné koprocesoru.
_MoveToCoprocessor, _MoveToCoprocessor2
Tyto vnitřní funkce zapsat data do ARM coprocessors pomocí pokynů pro přenos dat koprocesoru.
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
Hodnota k zapsání koprocesoru.coproc
Koprocesoru číslo v rozsahu 0 až 15.opcode1
Specifické koprocesoru opcode v rozsahu 0 až 7.crn
Koprocesoru zaregistrovat číslo v rozsahu 0 až 15, která určuje první operand, který instrukce.crm
Koprocesoru zaregistrovat číslo v rozsahu 0 až 15 určující další zdrojové nebo cílové operand.opcode2
Další specifické koprocesoru opcode v rozsahu 0 až 7.
Vrácená hodnota
Žádný
Poznámky
Hodnoty coproc, opcode1, crn, crm, a opcode2 tomto vnitřní parametry musí být konstantní výrazy, které jsou známy v době kompilace.
_MoveToCoprocessorpoužívá instrukce MCR; _MoveToCoprocessor2používá MCR2.Parametry odpovídají bitová pole, které jsou kódovány přímo do aplikace word instrukce.Interpretace parametrů je závislá na koprocesoru.Další informace naleznete v příručce pro dotyčné koprocesoru.
_MoveToCoprocessor64
Tyto vnitřní funkce zapsat data do ARM coprocessors pomocí pokynů pro přenos dat koprocesoru.
void _MoveFromCoprocessor64(
unsigned __int64 value,
unsigned int coproc,
unsigned int opcode1,
unsigned int crm,
);
Parametry
coproc
Koprocesoru číslo v rozsahu 0 až 15.opcode1
Specifické koprocesoru opcode v rozsahu 0 až 15.crm
Koprocesoru zaregistrovat číslo v rozsahu 0 až 15 určující další zdrojové nebo cílové operand.
Vrácená hodnota
Žádný
Poznámky
Hodnoty coproc, opcode1, a crm tomto vnitřní parametry musí být konstantní výrazy, které jsou známy v době kompilace.
_MoveFromCoprocessor64používá instrukce MCRR.Parametry odpovídají bitová pole, které jsou kódovány přímo do aplikace word instrukce.Interpretace parametrů je závislá na koprocesoru.Další informace naleznete v příručce pro dotyčné koprocesoru.
Podpora vnitřní z jiné architektury ARM
V následující tabulce jsou uvedeny vnitřní z jiné architektury, které jsou podporovány na platformě ARM.Pokud chování vnitřnímu na ARM liší od jeho chování v jiných hardwarovou architekturou jsou uvedeny další podrobnosti.
Název funkce |
Prototyp funkce |
---|---|
__assume |
void __assume(int) |
__code_seg |
void __code_seg(const char *) |
__debugbreak |
void __cdecl __debugbreak(void) |
__fastfail |
__declspec(noreturn) void __fastfail(unsigned int) |
__nop |
void __nop(void)
Poznámka
Na platformě ARM tato funkce generuje instrukce NOP, pokud jeden je implementována v architektuře cíl; jinak je generována alternativní instrukce, které nemění stav programu nebo využití procesoru – například MOV r8, r8.Toto je funkčně ekvivalentní s vnitřní pro ostatní hardwarovou architekturou __nop.Protože instrukce, která nemá žádný vliv na stav programu nebo procesoru může být ignorovány podle cílové architektury jako optimalizace, instrukce nespotřebovává nutně cykly procesoru.Proto nelze použít vnitřní __nop manipulovat doba provádění sekvenci kódu, pokud si nejste jisti, o chování procesoru.Místo toho můžete použít vnitřní __nop Chcete-li zarovnat další instrukce k určité hranice 32bitové adresy.
|
__yield |
void __yield(void)
Poznámka
Na platformě ARM, tato funkce generuje pokyn výnos označuje vlákno provádí úkol, který může být dočasně pozastaveno z spuštění – například spinlock, nemá žádný vliv na program.Díky procesoru během spuštění cykly, které by jinak plýtvat provést další úkoly.
|
_AddressOfReturnAddress |
void * _AddressOfReturnAddress(void) |
_BitScanForward |
nepodepsané char _BitScanForward (nepodepsané dlouhé * _Index, unsigned long _Mask) |
_BitScanReverse |
nepodepsané char _BitScanReverse (nepodepsané dlouhé * _Index, unsigned long _Mask) |
_bittest |
nepodepsané char _bittest (dlouhý const *, dlouhé) |
_bittestandcomplement |
nepodepsané char _bittestandcomplement (dlouhé *, dlouhé) |
_bittestandreset |
nepodepsané char _bittestandreset (dlouhé *, dlouhé) |
_bittestandset |
nepodepsané char _bittestandset (dlouhé *, dlouhé) |
_byteswap_uint64 |
Nepodepsaný __int64 __cdecl _byteswap_uint64(unsigned __int64) |
_byteswap_ulong |
nepodepsaný dlouhý __cdecl _byteswap_ulong(unsigned long) |
_byteswap_ushort |
nepodepsané krátké __cdecl _byteswap_ushort (nepodepsané krátké) |
_disable |
void __cdecl _disable(void)
Poznámka
Na platformě ARM tato funkce generuje instrukce CPSID; je k dispozici pouze jako vnitřní.
|
_Aktivovat |
void __cdecl _enable(void)
Poznámka
Na platformě ARM tato funkce generuje instrukce CPSIE; je k dispozici pouze jako vnitřní.
|
_lrotl |
nepodepsaný dlouhý __cdecl _lrotl (unsigned long int) |
_lrotr |
nepodepsaný dlouhý __cdecl _lrotr (unsigned long int) |
_ReadBarrier |
void _ReadBarrier(void) |
_ReadWriteBarrier |
void _ReadWriteBarrier(void) |
_ReturnAddress |
void * _ReturnAddress(void) |
_rotl |
unsigned int __cdecl _rotl (unsigned int _Value, int _Shift) |
_rotl16 |
nepodepsané krátké _rotl16 (unsigned short _Value, unsigned char _Shift) |
_rotl64 |
__int64 __cdecl _rotl64, bez znaménka (unsigned __int64 _Value, int _Shift) |
_rotl8 |
char _rotl8, bez znaménka (unsigned char _Value, unsigned char _Shift) |
_rotr |
unsigned int __cdecl _rotr (unsigned int _Value, int _Shift) |
_rotr16 |
nepodepsané krátké _rotr16 (unsigned short _Value, unsigned char _Shift) |
_rotr64 |
__int64 __cdecl _rotr64, bez znaménka (unsigned __int64 _Value, int _Shift) |
_rotr8 |
char _rotr8, bez znaménka (unsigned char _Value, unsigned char _Shift) |
_setjmpex |
int __cdecl _setjmpex(jmp_buf) |
_WriteBarrier |
void _WriteBarrier(void) |
[NEÓNOVÁ]
Vnitřní šachtu
Šachtu vnitřní představují sadu vnitřní používaného k operacím čtení upravit zápis atomové.Některé z nich jsou společné pro všechny platformy.Jsou uvedeny samostatně v tomto poli, protože existuje velké množství z nich, ale jejich definice jsou převážně redundantní, a proto je snadnější přemýšlet o nich obecně podmínky.Jejich názvy lze použít k odvození přesné chování.
Následující tabulka shrnuje podporu ARM vnitřní non bittest propojený znak mužského.Každou buňku v tabulce odpovídá názvu, který je odvozen připojením název operace v buňce nejvíce vlevo v řádku a název typu nahoře buňky sloupce, chcete-li _Interlocked.Například buňka v průsečíku Xor řádek a 8 sloupec odpovídá _InterlockedXor8 a je plně podporováno.Většina funkcí podporovaných nabízejí tyto volitelné přípony: _acq, _rel, a _nf._acq Příponu označuje, "získat" sémantické a _rel příponu označuje sémantické "uvolnění".Tyto přípony jsou popsány v dokumentaci IPF na webu MSDN._nf Nebo přípona "žádná ochranná" je jedinečný pro ARM a je popsána v další části.
8 |
16 |
32 |
64 |
P |
|
---|---|---|---|---|---|
Přidejte |
Žádná |
Žádná |
Úplný |
Úplný |
Žádná |
A |
Úplný |
Úplný |
Úplný |
Úplný |
Žádná |
CompareExchange |
Úplný |
Úplný |
Úplný |
Úplný |
Úplný |
Snížení hodnoty |
Žádná |
Úplný |
Úplný |
Úplný |
Žádná |
Exchange |
Částečné |
Částečné |
Částečné |
Částečné |
Částečné |
ExchangeAdd |
Úplný |
Úplný |
Úplný |
Úplný |
Žádná |
Přírůstek |
Žádná |
Úplný |
Úplný |
Úplný |
Žádná |
Nebo |
Úplný |
Úplný |
Úplný |
Úplný |
Žádná |
XOR |
Úplný |
Úplný |
Úplný |
Úplný |
Žádná |
Klíč:
Full: supports plain, _acq, _rel, and _nf forms.
Částečná: podporuje prostý, _acq, a _nf formuláře.
Žádný: není podporován.
Přípona _nf (bez ohraničení)
_nf Nebo přípona "žádná ochranná" označuje operaci nechová jako jakýkoliv druh paměti bariéry.Tím se liší od tří formulářů (obyčejný, _acq, a _rel), které všechny se chovají jako určitý druh bariéry.Jedno možné použití _nf formulářů je udržovat statistiky čítač, který je aktualizován pomocí více vláken současně, ale jejichž hodnota není použita jinak, zatímco více vláken při vykonávání.
Seznam šachtu vnitřní
Název funkce |
Prototyp funkce |
---|---|
_InterlockedAdd |
dlouhý _InterlockedAdd (dlouhý _volatile *, dlouhé) |
_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 |
dlouhý _InterlockedAdd_acq (dlouhý těkavých *, dlouhé) |
_InterlockedAdd_nf |
dlouhý _InterlockedAdd_nf (dlouhý těkavých *, dlouhé) |
_InterlockedAdd_rel |
dlouhý _InterlockedAdd_rel (dlouhý těkavých *, dlouhé) |
_InterlockedAnd |
dlouhý _InterlockedAnd (dlouhý těkavých *, dlouhé) |
_InterlockedAnd16 |
krátké _InterlockedAnd16 (krátký volatile *, krátké) |
_InterlockedAnd16_acq |
krátké _InterlockedAnd16_acq (krátký volatile *, krátké) |
_InterlockedAnd16_nf |
krátké _InterlockedAnd16_nf (krátký volatile *, krátké) |
_InterlockedAnd16_rel |
krátké _InterlockedAnd16_rel (krátký volatile *, krátké) |
_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 |
Char _InterlockedAnd8 (char volatile *, znak) |
_InterlockedAnd8_acq |
Char _InterlockedAnd8_acq (char volatile *, znak) |
_InterlockedAnd8_nf |
Char _InterlockedAnd8_nf (char volatile *, znak) |
_InterlockedAnd8_rel |
Char _InterlockedAnd8_rel (char volatile *, znak) |
_InterlockedAnd_acq |
dlouhý _InterlockedAnd_acq (dlouhý těkavých *, dlouhé) |
_InterlockedAnd_nf |
dlouhý _InterlockedAnd_nf (dlouhý těkavých *, dlouhé) |
_InterlockedAnd_rel |
dlouhý _InterlockedAnd_rel (dlouhý těkavých *, dlouhé) |
_InterlockedCompareExchange |
dlouhé __cdecl _InterlockedCompareExchange (dlouhý těkavých *, dlouhé, dlouhé) |
_InterlockedCompareExchange16 |
krátké _InterlockedCompareExchange16 (krátký volatile *, krátké, krátké) |
_InterlockedCompareExchange16_acq |
krátké _InterlockedCompareExchange16_acq (krátký volatile *, krátké, krátké) |
_InterlockedCompareExchange16_nf |
krátké _InterlockedCompareExchange16_nf (krátký volatile *, krátké, krátké) |
_InterlockedCompareExchange16_rel |
krátké _InterlockedCompareExchange16_rel (krátký volatile *, krátké, krátké) |
_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 |
Char _InterlockedCompareExchange8 (char volatile *, char, char) |
_InterlockedCompareExchange8_acq |
Char _InterlockedCompareExchange8_acq (char volatile *, char, char) |
_InterlockedCompareExchange8_nf |
Char _InterlockedCompareExchange8_nf (char volatile *, char, char) |
_InterlockedCompareExchange8_rel |
Char _InterlockedCompareExchange8_rel (char volatile *, char, char) |
_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 |
dlouhý _InterlockedCompareExchange_acq (dlouhý těkavých *, dlouhé, dlouhé) |
_InterlockedCompareExchange_nf |
dlouhý _InterlockedCompareExchange_nf (dlouhý těkavých *, dlouhé, dlouhé) |
_InterlockedCompareExchange_rel |
dlouhý _InterlockedCompareExchange_rel (dlouhý těkavých *, dlouhé, dlouhé) |
_InterlockedDecrement |
dlouhé __cdecl _InterlockedDecrement(long volatile *) |
_InterlockedDecrement16 |
krátké _InterlockedDecrement16(short volatile *) |
_InterlockedDecrement16_acq |
krátké _InterlockedDecrement16_acq(short volatile *) |
_InterlockedDecrement16_nf |
krátké _InterlockedDecrement16_nf(short volatile *) |
_InterlockedDecrement16_rel |
krátké _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 |
dlouhý _InterlockedDecrement_acq(long volatile *) |
_InterlockedDecrement_nf |
dlouhý _InterlockedDecrement_nf(long volatile *) |
_InterlockedDecrement_rel |
dlouhý _InterlockedDecrement_rel(long volatile *) |
_InterlockedExchange |
dlouhé __cdecl _InterlockedExchange (dlouhý těkavých * _Target dlouhý) |
_InterlockedExchange16 |
krátké _InterlockedExchange16 (krátký volatile * _Target krátké) |
_InterlockedExchange16_acq |
krátké _InterlockedExchange16_acq (krátký volatile * _Target krátké) |
_InterlockedExchange16_nf |
krátké _InterlockedExchange16_nf (krátký volatile * _Target krátké) |
_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 |
Char _InterlockedExchange8 (char volatile * _Target, znak) |
_InterlockedExchange8_acq |
Char _InterlockedExchange8_acq (char volatile * _Target, znak) |
_InterlockedExchange8_nf |
Char _InterlockedExchange8_nf (char volatile * _Target, znak) |
_InterlockedExchangeAdd |
dlouhé __cdecl _InterlockedExchangeAdd (dlouhý těkavých *, dlouhé) |
_InterlockedExchangeAdd16 |
krátké _InterlockedExchangeAdd16 (krátký volatile *, krátké) |
_InterlockedExchangeAdd16_acq |
krátké _InterlockedExchangeAdd16_acq (krátký volatile *, krátké) |
_InterlockedExchangeAdd16_nf |
krátké _InterlockedExchangeAdd16_nf (krátký volatile *, krátké) |
_InterlockedExchangeAdd16_rel |
krátké _InterlockedExchangeAdd16_rel (krátký volatile *, krátké) |
_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 |
Char _InterlockedExchangeAdd8 (char volatile *, znak) |
_InterlockedExchangeAdd8_acq |
Char _InterlockedExchangeAdd8_acq (char volatile *, znak) |
_InterlockedExchangeAdd8_nf |
Char _InterlockedExchangeAdd8_nf (char volatile *, znak) |
_InterlockedExchangeAdd8_rel |
Char _InterlockedExchangeAdd8_rel (char volatile *, znak) |
_InterlockedExchangeAdd_acq |
dlouhý _InterlockedExchangeAdd_acq (dlouhý těkavých *, dlouhé) |
_InterlockedExchangeAdd_nf |
dlouhý _InterlockedExchangeAdd_nf (dlouhý těkavých *, dlouhé) |
_InterlockedExchangeAdd_rel |
dlouhý _InterlockedExchangeAdd_rel (dlouhý těkavých *, dlouhé) |
_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 |
dlouhý _InterlockedExchange_acq (dlouhý těkavých * _Target dlouhý) |
_InterlockedExchange_nf |
dlouhý _InterlockedExchange_nf (dlouhý těkavých * _Target dlouhý) |
_InterlockedIncrement |
dlouhé __cdecl _InterlockedIncrement(long volatile *) |
_InterlockedIncrement16 |
krátké _InterlockedIncrement16(short volatile *) |
_InterlockedIncrement16_acq |
krátké _InterlockedIncrement16_acq(short volatile *) |
_InterlockedIncrement16_nf |
krátké _InterlockedIncrement16_nf(short volatile *) |
_InterlockedIncrement16_rel |
krátké _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 |
dlouhý _InterlockedIncrement_acq(long volatile *) |
_InterlockedIncrement_nf |
dlouhý _InterlockedIncrement_nf(long volatile *) |
_InterlockedIncrement_rel |
dlouhý _InterlockedIncrement_rel(long volatile *) |
_InterlockedOr |
dlouhý _InterlockedOr (dlouhý těkavých *, dlouhé) |
_InterlockedOr16 |
krátké _InterlockedOr16 (krátký volatile *, krátké) |
_InterlockedOr16_acq |
krátké _InterlockedOr16_acq (krátký volatile *, krátké) |
_InterlockedOr16_nf |
krátké _InterlockedOr16_nf (krátký volatile *, krátké) |
_InterlockedOr16_rel |
krátké _InterlockedOr16_rel (krátký volatile *, krátké) |
_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 |
Char _InterlockedOr8 (char volatile *, znak) |
_InterlockedOr8_acq |
Char _InterlockedOr8_acq (char volatile *, znak) |
_InterlockedOr8_nf |
Char _InterlockedOr8_nf (char volatile *, znak) |
_InterlockedOr8_rel |
Char _InterlockedOr8_rel (char volatile *, znak) |
_InterlockedOr_acq |
dlouhý _InterlockedOr_acq (dlouhý těkavých *, dlouhé) |
_InterlockedOr_nf |
dlouhý _InterlockedOr_nf (dlouhý těkavých *, dlouhé) |
_InterlockedOr_rel |
dlouhý _InterlockedOr_rel (dlouhý těkavých *, dlouhé) |
_InterlockedXor |
dlouhý _InterlockedXor (dlouhý těkavých *, dlouhé) |
_InterlockedXor16 |
krátké _InterlockedXor16 (krátký volatile *, krátké) |
_InterlockedXor16_acq |
krátké _InterlockedXor16_acq (krátký volatile *, krátké) |
_InterlockedXor16_nf |
krátké _InterlockedXor16_nf (krátký volatile *, krátké) |
_InterlockedXor16_rel |
krátké _InterlockedXor16_rel (krátký volatile *, krátké) |
_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 |
Char _InterlockedXor8 (char volatile *, znak) |
_InterlockedXor8_acq |
Char _InterlockedXor8_acq (char volatile *, znak) |
_InterlockedXor8_nf |
Char _InterlockedXor8_nf (char volatile *, znak) |
_InterlockedXor8_rel |
Char _InterlockedXor8_rel (char volatile *, znak) |
_InterlockedXor_acq |
dlouhý _InterlockedXor_acq (dlouhý těkavých *, dlouhé) |
_InterlockedXor_nf |
dlouhý _InterlockedXor_nf (dlouhý těkavých *, dlouhé) |
_InterlockedXor_rel |
dlouhý _InterlockedXor_rel (dlouhý těkavých *, dlouhé) |
[NEÓNOVÁ]
_interlockedbittest vnitřní
Vnitřní obyčejný šachtu bittest jsou společné pro všechny platformy.Přidá ARM _acq, _rel, a _nf varianty, které stačí upravit bariéry sémantika operace, jak je popsáno v Přípona _nf (bez ohraničení) dříve v tomto článku.
Název funkce |
Prototyp funkce |
---|---|
_interlockedbittestandreset |
nepodepsané char _interlockedbittestandreset (dlouhý těkavých *, dlouhé) |
_interlockedbittestandreset_acq |
nepodepsané char _interlockedbittestandreset_acq (dlouhý těkavých *, dlouhé) |
_interlockedbittestandreset_nf |
nepodepsané char _interlockedbittestandreset_nf (dlouhý těkavých *, dlouhé) |
_interlockedbittestandreset_rel |
nepodepsané char _interlockedbittestandreset_rel (dlouhý těkavých *, dlouhé) |
_interlockedbittestandset |
nepodepsané char _interlockedbittestandset (dlouhý těkavých *, dlouhé) |
_interlockedbittestandset_acq |
nepodepsané char _interlockedbittestandset_acq (dlouhý těkavých *, dlouhé) |
_interlockedbittestandset_nf |
nepodepsané char _interlockedbittestandset_nf (dlouhý těkavých *, dlouhé) |
_interlockedbittestandset_rel |
nepodepsané char _interlockedbittestandset_rel (dlouhý těkavých *, dlouhé) |
[NEÓNOVÁ]
Viz také
Referenční dokumentace
Vnitřní objekty serveru kompilátoru