ARM – vnitřní prvky
Kompilátor Visual C++ zpřístupňuje následující vnitřní na architektuře ARM.Další informace o ARM naleznete ARM architektura referenční příručky a ARM Assembler nástroje Průvodce na webu informační středisko ARM.
NEÓNOVÁ
Rozšíření sady instrukcí vektoru NEÓNOVÁ ARM nabízejí více dat jediné instrukce (SIMD) funkce, které podobné v MMX SSE vektoru pokyn sady a které jsou společné pro procesory s architekturou x 86 a x 64.
Vnitřní NEÓNOVÁ jsou podporovány, jak je uvedeno v souboru hlaviček arm_neon.h.Podporu kompilátoru Visual C++ pro vnitřní NEÓNOVÁ podobá se ARM kompilátoru, který je popsána v příloze G toolchain ARM kompilátoru, verze 4.1 kompilátoru referenční na webu informační středisko ARM.
Základní rozdíl mezi kompilátor Visual C++ a kompilátoru ARM je, že kompilátor Visual C++ přidá _ex variant vldX a vstX vektorové zatížení a uložte pokyny._ex Variant provést další parametr, který určuje zarovnání argument ukazatele, ale jsou jinak identické jejich jinou hodnotu než_ex takový.
Vnitřní ARM konkrétní seznam
Název funkce |
Instrukce |
Prototyp funkce |
---|---|---|
_arm_smlal |
SMLAL |
_arm_smlal __int64 (__int64 _RdHiLo, int _Rn, int _Rm) |
_arm_umlal |
UMLAL |
nepodepsané __int64 _arm_umlal (bez znaménka __int64 _RdHiLo, bez znaménka int _Rn, _Rm bez znaménka int) |
_arm_clz |
CLZ |
nepodepsané int _arm_clz (bez znaménka 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 |
_arm_smlabb int (int _Rn, int _Rm, int _Ra) |
_arm_smlabt |
SMLABT |
_arm_smlabt int (int _Rn, int _Rm, int _Ra) |
_arm_smlatb |
SMLATB |
_arm_smlatb int (int _Rn, int _Rm, int _Ra) |
_arm_smlatt |
SMLATT |
_arm_smlatt int (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 |
_arm_smlawb int (int _Rn, int _Rm, int _Ra) |
_arm_smlawt |
SMLAWT |
_arm_smlawt int (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 |
nepodepsané int _arm_uadd16 (_Rn bez znaménka int, int nepodepsané _Rm) |
_arm_uadd8 |
UADD8 |
nepodepsané int _arm_uadd8 (_Rn bez znaménka int, int nepodepsané _Rm) |
_arm_uasx |
UASX |
nepodepsané int _arm_uasx (_Rn bez znaménka int, int nepodepsané _Rm) |
_arm_usax |
USAX |
nepodepsané int _arm_usax (_Rn bez znaménka int, int nepodepsané _Rm) |
_arm_usub16 |
USUB16 |
nepodepsané int _arm_usub16 (_Rn bez znaménka int, int nepodepsané _Rm) |
_arm_usub8 |
USUB8 |
nepodepsané int _arm_usub8 (_Rn bez znaménka int, int nepodepsané _Rm) |
_arm_uhadd16 |
UHADD16 |
nepodepsané int _arm_uhadd16 (_Rn bez znaménka int, int nepodepsané _Rm) |
_arm_uhadd8 |
UHADD8 |
nepodepsané int _arm_uhadd8 (_Rn bez znaménka int, int nepodepsané _Rm) |
_arm_uhasx |
UHASX |
nepodepsané int _arm_uhasx (_Rn bez znaménka int, int nepodepsané _Rm) |
_arm_uhsax |
UHSAX |
nepodepsané int _arm_uhsax (_Rn bez znaménka int, int nepodepsané _Rm) |
_arm_uhsub16 |
UHSUB16 |
nepodepsané int _arm_uhsub16 (_Rn bez znaménka int, int nepodepsané _Rm) |
_arm_uhsub8 |
UHSUB8 |
nepodepsané int _arm_uhsub8 (_Rn bez znaménka int, int nepodepsané _Rm) |
_arm_uqadd16 |
UQADD16 |
nepodepsané int _arm_uqadd16 (_Rn bez znaménka int, int nepodepsané _Rm) |
_arm_uqadd8 |
UQADD8 |
nepodepsané int _arm_uqadd8 (_Rn bez znaménka int, int nepodepsané _Rm) |
_arm_uqasx |
UQASX |
nepodepsané int _arm_uqasx (_Rn bez znaménka int, int nepodepsané _Rm) |
_arm_uqsax |
UQSAX |
nepodepsané int _arm_uqsax (_Rn bez znaménka int, int nepodepsané _Rm) |
_arm_uqsub16 |
UQSUB16 |
nepodepsané int _arm_uqsub16 (_Rn bez znaménka int, int nepodepsané _Rm) |
_arm_uqsub8 |
UQSUB8 |
nepodepsané int _arm_uqsub8 (_Rn bez znaménka int, int nepodepsané _Rm) |
_arm_sxtab |
SXTAB |
int _arm_sxtab (int _Rn, int _Rm, _Rotation bez znaménka int) |
_arm_sxtab16 |
SXTAB16 |
int _arm_sxtab16 (_Rn int, int _Rm nepodepsané int _Rotation) |
_arm_sxtah |
SXTAH |
int _arm_sxtah (int _Rn, int _Rm, _Rotation bez znaménka int) |
_arm_uxtab |
UXTAB |
nepodepsané int _arm_uxtab (bez znaménka int _Rn, bez znaménka int _Rm, _Rotation bez znaménka int) |
_arm_uxtab16 |
UXTAB16 |
nepodepsané int _arm_uxta16b (nepodepsané int _Rn, int nepodepsané _Rm, _Rotation bez znaménka int) |
_arm_uxtah |
UXTAH |
nepodepsané int _arm_uxtah (bez znaménka int _Rn, bez znaménka int _Rm, _Rotation bez znaménka int) |
_arm_sxtb |
SXTB |
int _arm_sxtb (int _Rn, int nepodepsané _Rotation) |
_arm_sxtb16 |
SXTB16 |
int _arm_sxtb16 (_Rn int, int nepodepsané _Rotation) |
_arm_sxth |
SXTH |
int _arm_sxth (int _Rn, int nepodepsané _Rotation) |
_arm_uxtb |
UXTB |
nepodepsané int _arm_uxtb (_Rn bez znaménka int, int nepodepsané _Rotation) |
_arm_uxtb16 |
UXTB16 |
nepodepsané int _arm_uxtb16 (_Rn bez znaménka int, int nepodepsané _Rotation) |
_arm_uxth |
UXTH |
nepodepsané int _arm_uxth (_Rn bez znaménka int, int nepodepsané _Rotation) |
_arm_pkhbt |
PKHBT |
int _arm_pkhbt (int _Rn, int _Rm, _Lsl_imm bez znaménka int) |
_arm_pkhtb |
PKHTB |
int _arm_pkhtb (int _Rn, int _Rm, _Asr_imm bez znaménka int) |
_arm_usad8 |
USAD8 |
nepodepsané int _arm_usad8 (_Rn bez znaménka int, int nepodepsané _Rm) |
_arm_usada8 |
USADA8 |
nepodepsané int _arm_usada8 (nepodepsané int _Rn, int nepodepsané _Rm, _Ra bez znaménka int) |
_arm_ssat |
SSAT |
int _arm_ssat (bez znaménka int _Sat_imm, _int _Rn, _ARMINTR_SHIFT_T _Shift_type, _Shift_imm bez znaménka int) |
_arm_usat |
USAT |
int _arm_usat (bez znaménka int _Sat_imm, _int _Rn, _ARMINTR_SHIFT_T _Shift_type, _Shift_imm bez znaménka int) |
_arm_ssat16 |
SSAT16 |
int _arm_ssat16 (bez znaménka int _Sat_imm, _int _Rn) |
_arm_usat16 |
USAT16 |
int _arm_usat16 (bez znaménka int _Sat_imm, _int _Rn) |
_arm_rev |
PŘEDCHOZÍ |
nepodepsané int _arm_rev (bez znaménka int _Rm) |
_arm_rev16 |
REV16 |
nepodepsané int _arm_rev16 (nepodepsané int _Rm) |
_arm_revsh |
REVSH |
nepodepsané int _arm_revsh (bez znaménka int _Rm) |
_arm_smlad |
SMLAD |
_arm_smlad int (int _Rn, int _Rm, int _Ra) |
_arm_smladx |
SMLADX |
_arm_smladx int (int _Rn, int _Rm, int _Ra) |
_arm_smlsd |
SMLSD |
_arm_smlsd int (int _Rn, int _Rm, int _Ra) |
_arm_smlsdx |
SMLSDX |
_arm_smlsdx int (int _Rn, int _Rm, int _Ra) |
_arm_smmla |
SMMLA |
_arm_smmla int (int _Rn, int _Rm, int _Ra) |
_arm_smmlar |
SMMLAR |
_arm_smmlar int (int _Rn, int _Rm, int _Ra) |
_arm_smmls |
SMMLS |
_arm_smmls int (int _Rn, int _Rm, int _Ra) |
_arm_smmlsr |
SMMLSR |
_arm_smmlsr int (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 |
__int64 _arm_smull (int _Rn, int _Rm) |
_arm_umull |
UMULL |
nepodepsané __int64 _arm_umull (_Rn bez znaménka int, int nepodepsané _Rm) |
_arm_umaal |
UMAAL |
nepodepsané __int64 _arm_umaal (bez znaménka int _RdLo, bez znaménka int _RdHi, bez znaménka int _Rn, _Rm bez znaménka int) |
_arm_bfc |
BFC |
nepodepsané int _arm_bfc (bez znaménka int _Rd, _Lsb bez znaménka int, k vlastnostem _Width bez znaménka int) |
_arm_bfi |
BFI |
nepodepsané int _arm_bfi (bez znaménka int _Rd, bez znaménka int _Rn, _Lsb bez znaménka int, k vlastnostem _Width bez znaménka int) |
_arm_rbit |
RBIT |
nepodepsané int _arm_rbit (bez znaménka int _Rm) |
_arm_sbfx |
SBFX |
_arm_sbfx int (int _Rn, _Lsb bez znaménka int, k vlastnostem _Width bez znaménka int) |
_arm_ubfx |
UBFX |
nepodepsané int _arm_ubfx (bez znaménka int _Rn, _Lsb bez znaménka int, k vlastnostem _Width bez znaménka int) |
_arm_sdiv |
SDIV |
int _arm_sdiv (int _Rn, int _Rm) |
_arm_udiv |
UDIV |
nepodepsané int _arm_udiv (_Rn bez znaménka int, int nepodepsané _Rm) |
__cps |
CPS |
void __cps (bez znaménka int _Ops, bez znaménka int _Flags, _Mode bez znaménka int) |
__dmb |
MB |
void __dmb (nepodepsané int _Type) Vloží operaci bariéry paměti do datového proudu instrukcí.Parametr _Type určuje druh omezení, který vynutí bariéry. Další informace o možnostech omezení, které lze vynutit naleznete v tématu paměť bariéry omezení. |
__dsb |
DSB |
void __dsb (bez znaménka int _stálosti) Vloží operaci bariéry paměti do datového proudu instrukcí.Parametr _Type určuje druh omezení, který vynutí bariéry. Další informace o možnostech omezení, které lze vynutit naleznete v tématu paměť bariéry omezení. |
__isb |
ISB |
void __isb (bez znaménka int _stálosti) Vloží operaci bariéry paměti do datového proudu instrukcí.Parametr _Type určuje druh omezení, který vynutí bariéry. Další informace o možnostech omezení, které lze vynutit naleznete v tématu paměť bariéry omezení. |
__emit |
void __emit (bez znaménka __int32 opcode) Vloží zadaný instrukcí do datového proudu pokyny, které je výstupem překladačem. Hodnota opcode musí být konstantní výraz, který je známý v době kompilace.Velikost pokyn slova je 16 bitů a nejvýznamnější 16 bitů opcode jsou ignorovány. Kompilátor usnadňuje žádný pokus o vyhodnotit obsah opcode a není zárukou procesoru nebo paměti stavu vložené instrukce se před provedením. Kompilátor předpokládá, že jsou stavy procesoru a paměti beze změny po provedení vložené instrukce.Pokyny, které změní stav proto může mít škodlivé dopad na normální kódu, který je generován kompilátor. Z tohoto důvodu použít emit pouze k vložení pokyny, které mají vliv na stav výkonu procesoru, který kompilátor nezpracovává obvykle – například koprocesoru stav – nebo implementovat funkce, které jsou deklarovány pomocí declspec(naked). |
|
__hvc |
HVC |
nepodepsané int __hvc (bez znaménka int,...) |
__iso_volatile_load16 |
__int16 __iso_volatile_load16 (konstantní těkavých __int16 *) Další informace naleznete v tématu __iso_volatile_load/úložiště vnitřní. |
|
__iso_volatile_load32 |
__int32 __iso_volatile_load32 (konstantní těkavých __int32 *) Další informace naleznete v tématu __iso_volatile_load/úložiště vnitřní. |
|
__iso_volatile_load64 |
__int64 __iso_volatile_load64 (konstantní těkavých __int64 *) Další informace naleznete v tématu __iso_volatile_load/úložiště vnitřní. |
|
__iso_volatile_load8 |
__int8 __iso_volatile_load8 (konstantní těkavých __int8 *) Další informace naleznete v tématu __iso_volatile_load/úložiště vnitřní. |
|
__iso_volatile_store16 |
void __iso_volatile_store16 (těkavých __int16 *, __int16) Další informace naleznete v tématu __iso_volatile_load/úložiště vnitřní. |
|
__iso_volatile_store32 |
void __iso_volatile_store32 (těkavých __int32 *, __int32) Další informace naleznete v tématu __iso_volatile_load/úložiště vnitřní. |
|
__iso_volatile_store64 |
void __iso_volatile_store64 (těkavých __int64 *, __int64) Další informace naleznete v tématu __iso_volatile_load/úložiště vnitřní. |
|
__iso_volatile_store8 |
void __iso_volatile_store8 (těkavých __int8 *, __int8) Další informace naleznete v tématu __iso_volatile_load/úložiště vnitřní. |
|
__ldrexd |
LDREXD |
__int64 __ldrexd (konstantní těkavých __int64 *) |
__prefetch |
PLD |
Neplatné __cdecl __prefetch(const void *) Poskytuje PLD paměti pokyn k systému, že paměť nebo blíží hodnotě zadané adresy může získat přístup k brzy.Některé systémy mohou zvolit optimalizovat pro tento vzor přístup paměti pro zvýšení výkonu za běhu.Však z C++ jazyk pohledu, funkce se neprojeví pozorovatelné a může neprovede žádnou akci na všech. |
__rdpmccntr64 |
nepodepsané __int64 __rdpmccntr64(void) |
|
__sev |
ZÁVAŽNOST |
Neplatné __sev(void) |
__static_assert |
void __static_assert (int, konstantní znak *) |
|
__swi |
SVC |
nepodepsané int __swi (bez znaménka int,...) |
__trap |
BKPT |
__trap int (int,...) |
__wfe |
WFE |
Neplatné __wfe(void) |
__wfi |
WFI |
Neplatné __wfi(void) |
_AddSatInt |
QADD |
_AddSatInt int (int, int) |
_CopyDoubleFromInt64 |
dvojité _CopyDoubleFromInt64(__int64) |
|
_CopyFloatFromInt32 |
float _CopyFloatFromInt32(__int32) |
|
_CopyInt32FromFloat |
__int32 _CopyInt32FromFloat(float) |
|
_CopyInt64FromDouble |
__int64 _CopyInt64FromDouble(double) |
|
_CountLeadingOnes |
nepodepsané int _CountLeadingOnes(unsigned long) |
|
_CountLeadingOnes64 |
nepodepsané int _CountLeadingOnes64(unsigned __int64) |
|
_CountLeadingSigns |
nepodepsané int _CountLeadingSigns(long) |
|
_CountLeadingSigns64 |
nepodepsané int _CountLeadingSigns64(__int64) |
|
_CountLeadingZeros |
nepodepsané int _CountLeadingZeros(unsigned long) |
|
_CountLeadingZeros64 |
nepodepsané int _CountLeadingZeros64(unsigned __int64) |
|
_CountOneBits |
nepodepsané int _CountOneBits(unsigned long) |
|
_CountOneBits64 |
nepodepsané int _CountOneBits64(unsigned __int64) |
|
_DAddSatInt |
QDADD |
_DAddSatInt int (int, int) |
_DSubSatInt |
QDSUB |
_DSubSatInt int (int, int) |
_isunordered |
int _isunordered (dvojité, double) |
|
_isunorderedf |
_isunorderedf int (float, float) |
|
_MoveFromCoprocessor |
MRC |
nepodepsané int _MoveFromCoprocessor (bez znaménka int, bez znaménka int, bez znaménka int, bez znaménka int, bez znaménka int) Načte data z ARM koprocesoru pomocí pokynů přenosu dat koprocesoru.Další informace naleznete v _MoveFromCoprocessor _MoveFromCoprocessor2. |
_MoveFromCoprocessor2 |
MRC2 |
nepodepsané int _MoveFromCoprocessor2 (nepodepsané int, bez znaménka int, bez znaménka int, bez znaménka int, int bez znaménka) Načte data z ARM koprocesoru pomocí pokynů přenosu dat koprocesoru.Další informace naleznete v _MoveFromCoprocessor _MoveFromCoprocessor2. |
_MoveFromCoprocessor64 |
MRRC |
nepodepsané __int64 _MoveFromCoprocessor64 (nepodepsané int, bez znaménka int, int bez znaménka) Načte data z ARM koprocesoru pomocí pokynů přenosu dat koprocesoru.Další informace naleznete v _MoveFromCoprocessor64. |
_MoveToCoprocessor |
MCR |
void _MoveToCoprocessor (bez znaménka int, bez znaménka int, bez znaménka int, bez znaménka int, bez znaménka int, bez znaménka int) Načte data z ARM koprocesoru pomocí pokynů přenosu dat koprocesoru.Další informace naleznete v _MoveToCoprocessor _MoveToCoprocessor2. |
_MoveToCoprocessor2 |
MCR2 |
void _MoveToCoprocessor2 (nepodepsané int, nepodepsané int, bez znaménka int, nepodepsané int, bez znaménka int, int bez znaménka) Načte data z ARM koprocesoru pomocí pokynů přenosu dat koprocesoru.Další informace naleznete v _MoveToCoprocessor _MoveToCoprocessor2. |
_MoveToCoprocessor64 |
MCRR |
void _MoveToCoprocessor64 (nepodepsané __int64, bez znaménka int, bez znaménka int, int bez znaménka) Načte data z ARM koprocesoru pomocí pokynů přenosu dat koprocesoru.Další informace naleznete v _MoveToCoprocessor64. |
_MulHigh |
dlouhé _MulHigh (dlouho, dlouhé) |
|
_MulUnsignedHigh |
nepodepsané dlouhé _MulUnsignedHigh (dlouhé dlouho nepodepsané bez znaménka) |
|
_ReadBankedReg |
PANÍ |
_ReadBankedReg int (int _Reg) |
_ReadStatusReg |
PANÍ |
int _ReadStatusReg(int) |
_SubSatInt |
QSUB |
_SubSatInt int (int, int) |
_WriteBankedReg |
MSR |
void _WriteBankedReg (int _Value, int _Reg) |
_WriteStatusReg |
MSR |
void _WriteStatusReg (int, int, int) |
[Přejít na začátek]
Omezení bariéry paměti
Vnitřní funkce __dmb (data paměti bariéry), __dsb (bariéry synchronizace dat), a __isb (pokyn synchronizace bariéry) použijte následující předdefinované hodnoty k určení, pokud jde o sdílení domény a druh přístupu k omezení bariéry paměti, které jsou ovlivněny operací.
Hodnota omezení |
Popis |
---|---|
_ARM_BARRIER_SY |
Úplná systému, čtení a zápisy. |
_ARM_BARRIER_ST |
Zápisy pouze úplné systému. |
_ARM_BARRIER_ISH |
Vnitřní sdílet, čtení a zápisy. |
_ARM_BARRIER_ISHST |
Vnitřní sdílet, zápisy pouze. |
_ARM_BARRIER_NSH |
Bez sdílet, čtení a zápisy. |
_ARM_BARRIER_NSHST |
Bez sdílet, zapíše pouze. |
_ARM_BARRIER_OSH |
Vnější sdílet, čtení a zápisy. |
_ARM_BARRIER_OSHST |
Vnější sdílet, zápisy pouze. |
Pro __isb vnitřní, je pouze omezení, které je aktuálně platný _ARM_BARRIER_SY; všechny ostatní hodnoty jsou rezervovány architekturu.
instrinsics __iso_volatile_load/úložiště
Tyto vnitřní funkce explicitně provádět zatížení a úložiště, 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 z pro čtení nebo zápis do umístění v paměti.Value(pouze vnitřní úložiště)
Hodnota určená k zápisu do umístění zadaného paměti.
Vrácená hodnota (pouze vnitřní zatížení)
Hodnota umístění paměti, která je zadána vlastností 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 přístupy paměti, které se nevztahují optimalizace kompilátoru.Kompilátor nelze odebrat, synthetize, nebo změnit relativní pořadí z těchto operací, ale negeneruje bariéry paměti implicitní hardwaru.Proto hardwaru může stále změnit pořadí přístupy pozorovatelné paměti v rámci více vláken.Přesněji řečeno, jsou tyto vnitřní objekty ekvivalentní těchto výrazů jako 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í objekty přijmout těkavých ukazatele skutečnost zohlednit těkavých proměnné.Však neexistuje žádné požadavky nebo doporučení pro použití těkavých ukazatele jako argumenty; Sémantika tyto operace se přesně shodují-li regulární, stálé typ se používá.
Další informace o /volatile:iso argument příkazového řádku naleznete v části /volatile (Interpretace klíčového slova volatile).
_MoveFromCoprocessor, _MoveFromCoprocessor2
Tyto vnitřní funkce přečíst data z ARM coprocessors pomocí pokynů přenosu 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é pro koprocesoru opcode v rozsahu 0 až 7crn
Číslo v rozsahu 0 až 15, který určuje první operand pro pokyn registru koprocesoru.crm
Číslo v rozsahu 0 až 15, který určuje další zdroj nebo cíl operand registru koprocesoru.opcode2
Další specifické koprocesoru opcode v rozsahu 0 až 7.
Návratová hodnota
Hodnota, která je načtena z koprocesoru.
Poznámky
Hodnoty všech pět parametrů tomto vnitřních musí být konstantní výrazy, které jsou známé v době kompilace.
_MoveFromCoprocessorpoužívá MRC výuku; _MoveFromCoprocessor2 používá MRC2.Parametry odpovídají bitová pole, které jsou zakódovány přímo do aplikace word pokyn.Výklad parametry 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ů přenosu 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é pro koprocesoru opcode v rozsahu 0 až 15.crm
Číslo v rozsahu 0 až 15, který určuje další zdroj nebo cíl operand registru koprocesoru.
Vrátí hodnotu
Hodnota, která je načtena z koprocesoru.
Poznámky
Hodnoty všechny tři parametry tomto vnitřní musí být konstantní výrazy, které jsou známé v době kompilace.
_MoveFromCoprocessor64používá MRRC instrukcí.Parametry odpovídají bitová pole, které jsou zakódovány přímo do aplikace word pokyn.Výklad parametry 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 podle pokynů přenosu 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, která má být zapsán do koprocesoru.coproc
Koprocesoru číslo v rozsahu 0 až 15.opcode1
Specifické pro koprocesoru opcode v rozsahu 0 až 7.crn
Číslo v rozsahu 0 až 15, který určuje první operand pro pokyn registru koprocesoru.crm
Číslo v rozsahu 0 až 15, který určuje další zdroj nebo cíl operand registru koprocesoru.opcode2
Další specifické koprocesoru opcode v rozsahu 0 až 7.
Návratová hodnota
Žádná.
Poznámky
Hodnoty coproc, opcode1, crn, crm, a opcode2 tomto vnitřní parametry musí být konstantní výrazy, které jsou známé v době kompilace.
_MoveToCoprocessorpoužívá MCR výuku; _MoveToCoprocessor2 používá MCR2.Parametry odpovídají bitová pole, které jsou zakódovány přímo do aplikace word pokyn.Výklad parametry 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 podle pokynů přenosu 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é pro koprocesoru opcode v rozsahu 0 až 15.crm
Číslo v rozsahu 0 až 15, který určuje další zdroj nebo cíl operand registru koprocesoru.
Návratová hodnota
Žádná.
Poznámky
Hodnoty coproc, opcode1, a crm tomto vnitřní parametry musí být konstantní výrazy, které jsou známé v době kompilace.
_MoveFromCoprocessor64používá MCRR instrukcí.Parametry odpovídají bitová pole, které jsou zakódovány přímo do aplikace word pokyn.Výklad parametry je závislá na koprocesoru.Další informace naleznete v příručce pro dotyčný koprocesoru.
Podpora ARM pro vnitřní objekty z jiné architektury
V následující tabulce jsou uvedeny vnitřní objekty z jiné architektury, které jsou podporovány na platformách ARM.Pokud chování vnitřním na ARM liší od jeho chování na jiné hardwarovou architekturou, jsou uvedeny další podrobnosti.
Název funkce |
Prototyp funkce |
---|---|
__assume |
Neplatné __assume(int) |
__code_seg |
Neplatné __code_seg(const char *) |
__debugbreak |
Neplatné __cdecl __debugbreak(void) |
__fastfail |
__declspec(noreturn) void __fastfail(unsigned int) |
__nop |
Neplatné __nop(void)
|
__yield |
Neplatné __yield(void)
|
_AddressOfReturnAddress |
Neplatné * _AddressOfReturnAddress(void) |
_BitScanForward |
nepodepsané char _BitScanForward (nepodepsané dlouho * _Index, bez znaménka dlouhé _podsítě) |
_BitScanReverse |
nepodepsané char _BitScanReverse (nepodepsané dlouho * _Index, bez znaménka dlouhé _podsítě) |
_bittest |
nepodepsané char _bittest (dlouhé konstantní *, 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 (bez znaménka krátké) |
_disable |
Neplatné __cdecl _disable(void)
|
_enable |
Neplatné __cdecl _enable(void)
|
_lrotl |
nepodepsané dlouhé __cdecl _lrotl (bez znaménka dlouhý, int) |
_lrotr |
nepodepsané dlouhé __cdecl _lrotr (bez znaménka dlouhý, int) |
_ReadBarrier |
Neplatné _ReadBarrier(void) |
_ReadWriteBarrier |
Neplatné _ReadWriteBarrier(void) |
_ReturnAddress |
Neplatné * _ReturnAddress(void) |
_rotl |
nepodepsané int __cdecl _rotl (_Value bez znaménka int, int _Shift) |
_rotl16 |
nepodepsané krátké _rotl16 (bez znaménka krátké _Value, bez znaménka char _Shift) |
_rotl64 |
nepodepsané __int64 __cdecl _rotl64 (bez znaménka __int64 _Value, int _Shift) |
_rotl8 |
nepodepsané char _rotl8 (bez znaménka char _Value, bez znaménka char _Shift) |
_rotr |
nepodepsané int __cdecl _rotr (_Value bez znaménka int, int _Shift) |
_rotr16 |
nepodepsané krátké _rotr16 (bez znaménka krátké _Value, bez znaménka char _Shift) |
_rotr64 |
nepodepsané __int64 __cdecl _rotr64 (bez znaménka __int64 _Value, int _Shift) |
_rotr8 |
nepodepsané char _rotr8 (bez znaménka char _Value, bez znaménka char _Shift) |
_setjmpex |
int __cdecl _setjmpex(jmp_buf) |
_WriteBarrier |
Neplatné _WriteBarrier(void) |
[Přejít na začátek]
Voláno vnitřní objekty
Voláno vnitřní objekty jsou sadu vnitřní objekty, které se používají k provádění atomické operací čtení upravit zápis.Některé z nich jsou společné pro všechny platformy.Jsou uvedeny samostatně zde vzhledem k tomu, že existuje velké množství z nich, ale jejich definice jsou většinou redundantní, proto je snazší myslíte o nich obecně podmínky.Jejich názvy lze použít k odvození přesné chování.
Následující tabulka shrnuje ARM podporou bez bittest propojený vnitřní objekty.Každou buňku v tabulce odpovídá názvu, která je odvozena připojením název operace v buňce nejvíce vlevo řádku a název typu v buňce navrchu sloupce, který se _Interlocked.Například buňka v průniku Xor řádku a 8 sloupec odpovídá _InterlockedXor8 a je plně podporováno.Většina funkcí podporovanou nabízejí tyto volitelné přípony: _acq, _rel, a _nf._acq Přípona určuje "získat" sémantické a _rel přípona označuje "uvolnění" sémantického._nf Nebo "žádné ohraničení" přípona je jedinečné pro ARM který je popsán v následující části.
8 |
16 |
32 |
64 |
P |
|
---|---|---|---|---|---|
Přidejte |
Žádná |
Žádná |
Do bloku |
Do bloku |
Žádná |
A |
Do bloku |
Do bloku |
Do bloku |
Do bloku |
Žádná |
CompareExchange |
Do bloku |
Do bloku |
Do bloku |
Do bloku |
Do bloku |
Snížení hodnoty |
Žádná |
Do bloku |
Do bloku |
Do bloku |
Žádná |
Exchange |
Částečné |
Částečné |
Částečné |
Částečné |
Částečné |
ExchangeAdd |
Do bloku |
Do bloku |
Do bloku |
Do bloku |
Žádná |
Zvýšení |
Žádná |
Do bloku |
Do bloku |
Do bloku |
Žádná |
Nebo |
Do bloku |
Do bloku |
Do bloku |
Do bloku |
Žádná |
XOR |
Do bloku |
Do bloku |
Do bloku |
Do bloku |
Žádná |
Klíč:
Úplná: podporuje prostý, _acq, _rel, a _nf formulářů.
Dílčí: podporuje prostý, _acq, a _nf formulářů.
Žádný: není podporován.
Přípona _nf (bez ohraničení)
_nf Nebo přípona "žádné ohraničení" znamená, že operace není chovají jako jakýkoli jiný typu paměť bariéry.Tím se liší od jiné tři formuláře (prostý, _acq, a _rel), který všechny chovají jako nějaký druh bariéry.Jeden využití _nf formulářů je Udržovat statistiky čítače, které je aktualizovat pomocí více vláken současně, ale jejíž hodnota není použit v opačném případě během jsou provádění více vláken.
Seznam voláno vnitřní objekty
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 |
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 |
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 |
znak _InterlockedCompareExchange8 (volatile znak *, char, char) |
_InterlockedCompareExchange8_acq |
znak _InterlockedCompareExchange8_acq (volatile znak *, char, char) |
_InterlockedCompareExchange8_nf |
znak _InterlockedCompareExchange8_nf (volatile znak *, char, char) |
_InterlockedCompareExchange8_rel |
znak _InterlockedCompareExchange8_rel (volatile znak *, char, char) |
_InterlockedCompareExchangePointer |
Neplatné * _InterlockedCompareExchangePointer (void * volatile *, void *, void *) |
_InterlockedCompareExchangePointer_acq |
Neplatné * _InterlockedCompareExchangePointer_acq (void * volatile *, void *, void *) |
_InterlockedCompareExchangePointer_nf |
Neplatné * _InterlockedCompareExchangePointer_nf (void * volatile *, void *, void *) |
_InterlockedCompareExchangePointer_rel |
Neplatné * _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 * _cílový dlouhé) |
_InterlockedExchange16 |
krátký _InterlockedExchange16 (krátký volatile * _cílový krátké) |
_InterlockedExchange16_acq |
krátký _InterlockedExchange16_acq (krátký volatile * _cílový krátké) |
_InterlockedExchange16_nf |
krátký _InterlockedExchange16_nf (krátký volatile * _cílový krátké) |
_InterlockedExchange64 |
__int64 _InterlockedExchange64 (__int64 volatile * _cílový __int64) |
_InterlockedExchange64_acq |
__int64 _InterlockedExchange64_acq (__int64 volatile * _cílový __int64) |
_InterlockedExchange64_nf |
__int64 _InterlockedExchange64_nf (__int64 volatile * _cílový __int64) |
_InterlockedExchange8 |
znak _InterlockedExchange8 (volatile znak * _cílový char) |
_InterlockedExchange8_acq |
znak _InterlockedExchange8_acq (volatile znak * _cílový char) |
_InterlockedExchange8_nf |
znak _InterlockedExchange8_nf (volatile znak * _cílový char) |
_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 |
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 |
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 |
Neplatné * _InterlockedExchangePointer (void * volatile * _cílový void *) |
_InterlockedExchangePointer_acq |
Neplatné * _InterlockedExchangePointer_acq (void * volatile * _cílový void *) |
_InterlockedExchangePointer_nf |
Neplatné * _InterlockedExchangePointer_nf (void * volatile * _cílový void *) |
_InterlockedExchange_acq |
dlouhé _InterlockedExchange_acq (dlouhé těkavých * _cílový dlouhé) |
_InterlockedExchange_nf |
dlouhé _InterlockedExchange_nf (dlouhé těkavých * _cílový 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 |
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 |
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 |
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 |
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é) |
[Přejít na začátek]
vnitřní objekty _interlockedbittest
Vnitřní prostý voláno bittest jsou společné pro všechny platformy.Přidá ARM _acq, _rel, a _nf variant, na které právě upravte bariéry sémantika operace, jak je popsáno v _nf (bez ohraničení) příponu 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é) |
[Přejít na začátek]