ARM iç bilgileri

Microsoft C++ derleyicisi (MSVC), ARM mimarisinde aşağıdaki iç bilgileri kullanılabilir hale getirir. ARM hakkında daha fazla bilgi için ARM Geliştirici Belgeleri web sitesinin Mimari ve Yazılım Geliştirme Araçları bölümlerine bakın.

NEON

ARM için NEON vektör yönerge kümesi uzantıları, x86 ve x64 mimari işlemcileri için ortak olan MMX ve SSE vektör yönerge kümelerindekilere benzeyen Tek Yönergeli Çoklu Veri (SIMD) özellikleri sağlar.

NEON iç bilgileri, üst bilgi dosyasında arm_neon.hsağlandığı gibi desteklenir. NEON iç bilgileri için MSVC desteği, ARM Infocenter web sitesindeki ARM Derleyicisi araç zincirinin Ek G, Sürüm 4.1 Derleyici Başvurusu bölümünde belgelenen ARM derleyicisininkine benzer.

MSVC ile ARM derleyicisi arasındaki birincil fark, MSVC'nin ve vstX vektör yükleme ve depolama yönergelerinin vldX değişkenlerini eklemesidir_ex. Çeşitlemeler _ex , işaretçi bağımsız değişkeninin hizalamasını belirten ek bir parametre alır, ancak aksi takdirde karşılıkları olmayanlarla_ex aynı olur.

ARM'ye Özgü İç Bilgi Listesi

İşlev Adı Talimat İşlev Prototipi
_arm_smlal SMLAL __int64 _arm_smlal(__int64 _RdHiLo, int _Rn, int _Rm)
_arm_umlal UMLAL unsigned __int64 _arm_umlal(unsigned __int64 _RdHiLo, unsigned int _Rn, 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 __int64 _arm_smlalbb(__int64 _RdHiLo, int _Rn, int _Rm)
_arm_smlalbt SMLALBT __int64 _arm_smlalbt(__int64 _RdHiLo, int _Rn, int _Rm)
_arm_smlaltb SMLALTB __int64 _arm_smlaltb(__int64 _RdHiLo, int _Rn, int _Rm)
_arm_smlaltt SMLALTT __int64 _arm_smlaltt(__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 unsigned int _arm_uadd16(unsigned int _Rn, unsigned int _Rm)
_arm_uadd8 UADD8 unsigned int _arm_uadd8(unsigned int _Rn, unsigned int _Rm)
_arm_uasx UASX unsigned int _arm_uasx(unsigned int _Rn, unsigned int _Rm)
_arm_usax USAX unsigned int _arm_usax(unsigned int _Rn, unsigned int _Rm)
_arm_usub16 USUB16 unsigned int _arm_usub16(unsigned int _Rn, unsigned int _Rm)
_arm_usub8 USUB8 unsigned int _arm_usub8(unsigned int _Rn, unsigned int _Rm)
_arm_uhadd16 UHADD16 unsigned int _arm_uhadd16(unsigned int _Rn, unsigned int _Rm)
_arm_uhadd8 UHADD8 unsigned int _arm_uhadd8(unsigned int _Rn, unsigned int _Rm)
_arm_uhasx UHASX unsigned int _arm_uhasx(unsigned int _Rn, unsigned int _Rm)
_arm_uhsax UHSAX unsigned int _arm_uhsax(unsigned int _Rn, unsigned int _Rm)
_arm_uhsub16 UHSUB16 unsigned int _arm_uhsub16(unsigned int _Rn, unsigned int _Rm)
_arm_uhsub8 UHSUB8 unsigned int _arm_uhsub8(unsigned int _Rn, unsigned int _Rm)
_arm_uqadd16 UQADD16 unsigned int _arm_uqadd16(unsigned int _Rn, unsigned int _Rm)
_arm_uqadd8 UQADD8 unsigned int _arm_uqadd8(unsigned int _Rn, unsigned int _Rm)
_arm_uqasx UQASX unsigned int _arm_uqasx(unsigned int _Rn, unsigned int _Rm)
_arm_uqsax UQSAX unsigned int _arm_uqsax(unsigned int _Rn, unsigned int _Rm)
_arm_uqsub16 UQSUB16 unsigned int _arm_uqsub16(unsigned int _Rn, unsigned int _Rm)
_arm_uqsub8 UQSUB8 unsigned int _arm_uqsub8(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, unsigned 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, unsigned int _Rm, unsigned int _Rotation)
_arm_uxtab16 UXTAB16 unsigned int _arm_uxta16b(unsigned int _Rn, unsigned int _Rm, unsigned int _Rotation)
_arm_uxtah UXTAH unsigned int _arm_uxtah(unsigned int _Rn, unsigned int _Rm, unsigned int _Rotation)
_arm_sxtb SXTB int _arm_sxtb(int _Rn, unsigned int _Rotation)
_arm_sxtb16 SXTB16 int _arm_sxtb16(int _Rn, unsigned int _Rotation)
_arm_sxth SXTH int _arm_sxth(int _Rn, unsigned int _Rotation)
_arm_uxtb UXTB unsigned int _arm_uxtb(unsigned int _Rn, unsigned int _Rotation)
_arm_uxtb16 UXTB16 unsigned int _arm_uxtb16(unsigned int _Rn, unsigned int _Rotation)
_arm_uxth UXTH unsigned int _arm_uxth(unsigned int _Rn, 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 unsigned int _arm_usad8(unsigned int _Rn, unsigned int _Rm)
_arm_usada8 USADA8 unsigned int _arm_usada8(unsigned 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 unsigned int _arm_rev16(unsigned int _Rm)
_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 __int64 _arm_smlald(__int64 _RdHiLo, int _Rn, int _Rm)
_arm_smlaldx SMLALDX __int64 _arm_smlaldx(__int64 _RdHiLo, int _Rn, int _Rm)
_arm_smlsld SMLSLD __int64 _arm_smlsld(__int64 _RdHiLo, int _Rn, int _Rm)
_arm_smlsldx SMLSLDX __int64 _arm_smlsldx(__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 unsigned __int64 _arm_umull(unsigned int _Rn, unsigned int _Rm)
_arm_umaal UMAAL unsigned __int64 _arm_umaal(unsigned int _RdLo, unsigned int _RdHi, unsigned int _Rn, unsigned int _Rm)
_arm_bfc BFC unsigned int _arm_bfc(unsigned int _Rd, unsigned int _Lsb, unsigned int _Width)
_arm_bfi BFI unsigned int _arm_bfi(unsigned int _Rd, unsigned int _Rn, unsigned int _Lsb, unsigned int _Width)
_arm_rbit RBIT unsigned int _arm_rbit(unsigned int _Rm)
_arm_sbfx SBFX int _arm_sbfx(int _Rn, unsigned int _Lsb, unsigned int _Width)
_arm_ubfx UBFX unsigned int _arm_ubfx(unsigned int _Rn, unsigned int _Lsb, unsigned int _Width)
_arm_sdiv SDIV int _arm_sdiv(int _Rn, int _Rm)
_arm_udiv UDIV unsigned int _arm_udiv(unsigned int _Rn, unsigned int _Rm)
__Cps CPS void __cps(unsigned int _Ops, unsigned int _Flags, unsigned int _Mode)
__dmb DMB void __dmb(unsigned int _Type)

Yönerge akışına bir bellek engeli işlemi ekler. parametresi _Type , engelin uyguladığı kısıtlama türünü belirtir.

Uygulanabilecek kısıtlama türleri hakkında daha fazla bilgi için bkz . Bellek Engeli Kısıtlamaları.
__dsb DSB void __dsb(unsigned int _Type)

Yönerge akışına bir bellek engeli işlemi ekler. parametresi _Type , engelin uyguladığı kısıtlama türünü belirtir.

Uygulanabilecek kısıtlama türleri hakkında daha fazla bilgi için bkz . Bellek Engeli Kısıtlamaları.
__isb ISB void __isb(unsigned int _Type)

Yönerge akışına bir bellek engeli işlemi ekler. parametresi _Type , engelin uyguladığı kısıtlama türünü belirtir.

Uygulanabilecek kısıtlama türleri hakkında daha fazla bilgi için bkz . Bellek Engeli Kısıtlamaları.
__Emit void __emit(imzasız __int32 opcode)

Derleyici tarafından çıktısı olan yönergelerin akışına belirtilen yönergeyi ekler.

değeri opcode , derleme zamanında bilinen bir sabit ifade olmalıdır. Yönerge sözcüğünün boyutu 16 bittir ve en önemli 16 biti opcode yoksayılır.

Derleyici, içeriğini opcode yorumlama girişiminde bulunmaz ve eklenen yönerge yürütülmeden önce CPU veya bellek durumunu garanti etmez.

Derleyici, eklenen yönerge yürütüldükten sonra CPU ve bellek durumlarının değişmediğini varsayar. Bu nedenle, değişiklik durumuyla ilgili yönergelerin derleyici tarafından oluşturulan normal kod üzerinde zarar verici bir etkisi olabilir.

Bu nedenle, yalnızca derleyicinin normalde işlemediği bir CPU durumunu etkileyen yönergeler eklemek (örneğin, ortak işlemci durumu) veya kullanılarak declspec(naked)bildirilen işlevleri uygulamak için kullanınemit.
__hvc HVC unsigned int __hvc(unsigned int, ...)
__iso_volatile_load16 __int16 __iso_volatile_load16(const volatile __int16 *)

Daha fazla bilgi için bkz . __iso_volatile_load/iç bilgileri depolama.
__iso_volatile_load32 __int32 __iso_volatile_load32(const volatile __int32 *)

Daha fazla bilgi için bkz . __iso_volatile_load/iç bilgileri depolama.
__iso_volatile_load64 __int64 __iso_volatile_load64(const volatile __int64 *)

Daha fazla bilgi için bkz . __iso_volatile_load/iç bilgileri depolama.
__iso_volatile_load8 __int8 __iso_volatile_load8(const volatile __int8 *)

Daha fazla bilgi için bkz . __iso_volatile_load/iç bilgileri depolama.
__iso_volatile_store16 void __iso_volatile_store16(geçici __int16 *, __int16)

Daha fazla bilgi için bkz . __iso_volatile_load/iç bilgileri depolama.
__iso_volatile_store32 void __iso_volatile_store32(geçici __int32 *, __int32)

Daha fazla bilgi için bkz . __iso_volatile_load/iç bilgileri depolama.
__iso_volatile_store64 void __iso_volatile_store64(geçici __int64 *, __int64)

Daha fazla bilgi için bkz . __iso_volatile_load/iç bilgileri depolama.
__iso_volatile_store8 void __iso_volatile_store8(geçici __int8 *, __int8)

Daha fazla bilgi için bkz . __iso_volatile_load/iç bilgileri depolama.
__ldrexd LDREXD __int64 __ldrexd(const volatile __int64 *)
__prefetch PLD void __cdecl __prefetch(const void *)

Sisteme, belirtilen adreste veya yakınında bulunan belleğe yakında erişilebileceğine ilişkin bir PLD bellek ipucu sağlar. Bazı sistemler çalışma zamanı performansını artırmak için bu bellek erişim deseni için iyileştirmeyi seçebilir. Ancak, C++ dili açısından işlevin gözlemlenebilir bir etkisi yoktur ve hiçbir şey yapamaz.
__rdpmccntr64 imzasız __int64 __rdpmccntr64(geçersiz)
__sev SEV void __sev(void)
__static_assert void __static_assert(int, const char *)
__swi SVC unsigned int __swi(unsigned int, ...)
__tuzak BKPT int __trap(int, ...)
__wfe WFE void __wfe(void)
__wfi WFI void __wfi(void)
_AddSatInt QADD int _AddSatInt(int, int)
_CopyDoubleFromInt64 double _CopyDoubleFromInt64(__int64)
_CopyFloatFromInt32 float _CopyFloatFromInt32(__int32)
_CopyInt32FromFloat __int32 _CopyInt32FromFloat(kayan)
_CopyInt64FromDouble __int64 _CopyInt64FromDouble(çift)
_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)
_CountTrailingZeros unsigned _CountTrailingZeros(unsigned long)
_CountTrailingZeros64 imzasız _CountTrailingZeros64(imzasız __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(çift, çift)
_isunorderedf int _isunorderedf(float, float)
_MoveFromCoprocessor MRC unsigned int _MoveFromCoprocessor(unsigned int, unsigned int, unsigned int, unsigned int)

Yardımcı işlemci veri aktarımı yönergelerini kullanarak arm yardımcı işlemcisinden verileri okur. Daha fazla bilgi için bkz . _MoveFromCoprocessor, _MoveFromCoprocessor2.
_MoveFromCoprocessor2 MRC2 unsigned int _MoveFromCoprocessor2(unsigned int, unsigned int, unsigned int, unsigned int)

Yardımcı işlemci veri aktarımı yönergelerini kullanarak arm yardımcı işlemcisinden verileri okur. Daha fazla bilgi için bkz . _MoveFromCoprocessor, _MoveFromCoprocessor2.
_MoveFromCoprocessor64 MRRC unsigned __int64 _MoveFromCoprocessor64(unsigned int, unsigned int, unsigned int)

Yardımcı işlemci veri aktarımı yönergelerini kullanarak arm yardımcı işlemcisinden verileri okur. Daha fazla bilgi için bkz . _MoveFromCoprocessor64.
_MoveToCoprocessor MCR void _MoveToCoprocessor(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int)

Yardımcı işlemci veri aktarımı yönergelerini kullanarak arm yardımcı işlemcisinden verileri okur. Daha fazla bilgi için bkz . _MoveToCoprocessor, _MoveToCoprocessor2.
_MoveToCoprocessor2 MCR2 void _MoveToCoprocessor2(unsigned int, unsigned int, unsigned int, unsigned int, unsigned int)

Yardımcı işlemci veri aktarımı yönergelerini kullanarak arm yardımcı işlemcisinden verileri okur. Daha fazla bilgi için bkz . _MoveToCoprocessor, _MoveToCoprocessor2.
_MoveToCoprocessor64 MCRR void _MoveToCoprocessor64(unsigned __int64, unsigned int, unsigned int, unsigned int)

Yardımcı işlemci veri aktarımı yönergelerini kullanarak arm yardımcı işlemcisinden verileri okur. Daha fazla bilgi için bkz . _MoveToCoprocessor64.
_MulHigh long _MulHigh(uzun, uzun)
_MulUnsignedHigh unsigned long _MulUnsignedHigh(unsigned long, unsigned long)
_ReadBankedReg BAYAN int _ReadBankedReg(int _Reg)
_ReadStatusReg BAYAN int _ReadStatusReg(int)
_SubSatInt QSUB int _SubSatInt(int, int)
_WriteBankedReg MSR void _WriteBankedReg(int _Value, int _Reg)
_WriteStatusReg MSR void _WriteStatusReg(int, int, int)

[En üste dön]

Bellek Engeli Kısıtlamaları

İç işlevler __dmb (veri bellek engeli), __dsb (veri eşitleme engeli) ve __isb (yönerge eşitleme engeli), paylaşım etki alanı ve işlemden etkilenen erişim türü açısından bellek engeli kısıtlamasını belirtmek için aşağıdaki önceden tanımlanmış değerleri kullanır.

Kısıtlama Değeri Açıklama
_ARM_BARRIER_SY Tam sistem, okuma ve yazma işlemleri.
_ARM_BARRIER_ST Tam sistem, yalnızca yazar.
_ARM_BARRIER_ISH İç paylaşılabilir, okuma ve yazma işlemleri.
_ARM_BARRIER_ISHST İç paylaşılabilir, yalnızca yazar.
_ARM_BARRIER_NSH Paylaşılamaz, okuma ve yazma işlemleri.
_ARM_BARRIER_NSHST Paylaşılamaz, yalnızca yazar.
_ARM_BARRIER_OSH Dış paylaşılabilir, okuma ve yazma işlemleri.
_ARM_BARRIER_OSHST Dış paylaşılabilir, yalnızca yazar.

__isb İç için geçerli olan tek kısıtlama _ARM_BARRIER_SY; diğer tüm değerler mimari tarafından ayrılmıştır.

__iso_volatile_load/iç bilgileri depolama

Bu iç işlevler, derleyici iyileştirmelerine tabi olmayan yükleri ve depoları açıkça gerçekleştirir.

__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);

Parametreler

Konum
Okuma veya yazma için bellek konumunun adresi.

Value
Belirtilen bellek konumuna yazacak değer (yalnızca iç bilgileri depola).

Dönüş değeri (yalnızca iç bilgileri yükle)

tarafından Locationbelirtilen bellek konumunun değeri.

Açıklamalar

derleyici iyileştirmelerine tabi olmayan bellek erişimlerini açıkça gerçekleştirmek için ve __iso_volatile_store8/16/32/64 iç işlevlerini kullanabilirsiniz__iso_volatile_load8/16/32/64. Derleyici bu işlemlerin göreli sırasını kaldıramaz, sentezleyemez veya değiştiremez, ancak örtük donanım bellek engelleri oluşturmaz. Bu nedenle, donanım yine de birden çok iş parçacığında gözlemlenebilir bellek erişimlerini yeniden sıralayabilir. Daha kesin olarak, bu iç öğeler /volatile:iso altında derlenen aşağıdaki ifadelerle eşdeğerdir.

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;

İçsel değerlerin geçici değişkenleri barındırmak için geçici işaretçiler almasına dikkat edin. Ancak değişken işaretçileri bağımsız değişken olarak kullanma gereksinimi veya önerisi yoktur. Normal, geçici olmayan bir tür kullanıldığında bu işlemlerin semantiği tam olarak aynıdır.

/volatile:iso komut satırı bağımsız değişkeni hakkında daha fazla bilgi için bkz. /volatile (geçici Anahtar Sözcük Yorumlama).

_MoveFromCoprocessor, _MoveFromCoprocessor2

Bu iç işlevler, yardımcı işlemci veri aktarımı yönergelerini kullanarak ARM yardımcı işlemcilerinden verileri okur.

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
);

Parametreler

coproc
0 ile 15 aralığındaki ortak işlemci numarası.

opcode1
0 ile 7 aralığındaki coprocessor'a özgü işlem kodu

crn
0 ile 15 aralığında, yönergenin ilk işlenenini belirten yardımcı işlemci kayıt numarası.

crm
0 ile 15 arasında ek bir kaynak veya hedef işlenen belirten ortak işlemci kayıt numarası.

opcode2
0 ile 7 aralığında ek birlikte işlemciye özgü işlem kodu.

Dönüş değeri

Ortak işlemciden okunan değer.

Açıklamalar

İç parametresinin beş parametresinin de değerleri, derleme zamanında bilinen sabit ifadeler olmalıdır.

_MoveFromCoprocessor MRC yönergesini kullanır; _MoveFromCoprocessor2 MRC2 kullanır. Parametreler, doğrudan yönerge sözcüğüne kodlanmış bitalanlarına karşılık gelir. Parametrelerin yorumlanması birlikte işlemciye bağlıdır. Daha fazla bilgi için, söz konusu yardımcı işlemcinin kılavuzuna bakın.

_MoveFromCoprocessor64

Ortak işlemci veri aktarımı yönergelerini kullanarak ARM işbirlikçilerinden verileri okur.

unsigned __int64 _MoveFromCoprocessor64(
      unsigned int coproc,
      unsigned int opcode1,
      unsigned int crm,
);

Parametreler

coproc
0 ile 15 aralığındaki ortak işlemci numarası.

opcode1
0 ile 15 arasında ortak işlemciye özgü işlem kodu.

crm
0 ile 15 arasında ek bir kaynak veya hedef işlenen belirten ortak işlemci kayıt numarası.

Dönüş değeri

Ortak işlemciden okunan değer.

Açıklamalar

İç parametrenin üç parametresinin de değerleri, derleme zamanında bilinen sabit ifadeler olmalıdır.

_MoveFromCoprocessor64 MRRC yönergesini kullanır. Parametreler, doğrudan yönerge sözcüğüne kodlanmış bitalanlarına karşılık gelir. Parametrelerin yorumlanması birlikte işlemciye bağlıdır. Daha fazla bilgi için, söz konusu yardımcı işlemcinin kılavuzuna bakın.

_MoveToCoprocessor, _MoveToCoprocessor2

Bu iç işlevler, ortak işlemci veri aktarımı yönergelerini kullanarak ARM işbirlikçilerine veri yazar.

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
);

Parametreler

value
Ortak işlemciye yazılacak değer.

coproc
0 ile 15 aralığındaki ortak işlemci numarası.

opcode1
0 ile 7 aralığındaki ortak işlemciye özgü işlem kodu.

crn
0 ile 15 aralığında, yönergenin ilk işlenenini belirten yardımcı işlemci kayıt numarası.

crm
0 ile 15 arasında ek bir kaynak veya hedef işlenen belirten ortak işlemci kayıt numarası.

opcode2
0 ile 7 aralığında ek birlikte işlemciye özgü işlem kodu.

Dönüş değeri

Yok.

Açıklamalar

İç öğesinin coproc, opcode1, crn, , crmve opcode2 parametrelerinin değerleri, derleme zamanında bilinen sabit ifadeler olmalıdır.

_MoveToCoprocessor MCR yönergesini kullanır; _MoveToCoprocessor2 MCR2 kullanır. Parametreler, doğrudan yönerge sözcüğüne kodlanmış bitalanlarına karşılık gelir. Parametrelerin yorumlanması birlikte işlemciye bağlıdır. Daha fazla bilgi için, söz konusu yardımcı işlemcinin kılavuzuna bakın.

_MoveToCoprocessor64

Bu iç işlevler, ortak işlemci veri aktarımı yönergelerini kullanarak ARM işbirlikçilerine veri yazar.

void _MoveFromCoprocessor64(
      unsigned __int64 value,
      unsigned int coproc,
      unsigned int opcode1,
      unsigned int crm,
);

Parametreler

coproc
0 ile 15 aralığındaki ortak işlemci numarası.

opcode1
0 ile 15 arasında ortak işlemciye özgü işlem kodu.

crm
0 ile 15 arasında ek bir kaynak veya hedef işlenen belirten ortak işlemci kayıt numarası.

Dönüş değeri

Yok.

Açıklamalar

İç öğesinin coproc, opcode1ve crm parametrelerinin değerleri, derleme zamanında bilinen sabit ifadeler olmalıdır.

_MoveFromCoprocessor64 MCRR yönergesini kullanır. Parametreler, doğrudan yönerge sözcüğüne kodlanmış bitalanlarına karşılık gelir. Parametrelerin yorumlanması birlikte işlemciye bağlıdır. Daha fazla bilgi için, söz konusu yardımcı işlemcinin kılavuzuna bakın.

Diğer Mimarilerden İç İçin ARM Desteği

Aşağıdaki tabloda ARM platformlarında desteklenen diğer mimarilerden gelen iç öğeler listelenmiştir. ARM'deki bir iç davranışın diğer donanım mimarilerindeki davranışından farklı olduğu durumlarda ek ayrıntılara dikkat edilir.

İşlev Adı İşlev Prototipi
__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) Not: ARM platformlarında bu işlev, hedef mimaride uygulandıysa bir NOP yönergesi oluşturur; aksi takdirde, programın veya CPU'nun durumunu değiştirmeyen alternatif bir yönerge oluşturulur; örneğin, MOV r8, r8. İşlevsel olarak diğer donanım mimarileri için __nop iç ile eşdeğerdir. Programın veya CPU'nun durumu üzerinde hiçbir etkisi olmayan bir yönerge, iyileştirme olarak hedef mimari tarafından yoksayılabilir, bu yönergenin MUTLAKA CPU döngülerini kullanmaması gerekir. Bu nedenle, CPU'nun nasıl davranacağı konusunda emin değilseniz kod dizisinin yürütme süresini işlemek için __nop iç öğesini kullanmayın. Bunun yerine, sonraki yönergeyi belirli bir 32 bit sınır adresiyle hizalamak için iç __nop kullanabilirsiniz.
__rekolte void __yield(void) Not: ARM platformlarında bu işlev, iş parçacığının programı olumsuz etkilemeden yürütmeden geçici olarak askıya alınabilecek bir görev (örneğin, bir spinlock) gerçekleştirdiğini gösteren YIELD yönergesini oluşturur. CPU'nın yürütme döngüleri sırasında başka görevleri yürütmesini sağlar ve aksi takdirde boşa gider.
_AddressOfReturnAddress void * _AddressOfReturnAddress(void)
_BitScanForward unsigned char _BitScanForward(unsigned long * _Index, unsigned long _Mask)
_BitScanReverse unsigned char _BitScanReverse(unsigned long * _Index, unsigned long _Mask)
_bittest unsigned char _bittest(long const *, long)
_bittestandcomplement işaretsiz karakter _bittestandcomplement(uzun *, uzun)
_bittestandreset işaretsiz karakter _bittestandreset(uzun *, uzun)
_bittestandset işaretsiz karakter _bittestandset(uzun *, uzun)
_byteswap_uint64 unsigned __int64 __cdecl _byteswap_uint64(unsigned __int64)
_byteswap_ulong işaretsiz uzun __cdecl _byteswap_ulong(işaretsiz uzun)
_byteswap_ushort işaretsiz kısa __cdecl _byteswap_ushort(işaretsiz kısa)
_disable void __cdecl _disable(void) Not: ARM platformlarında bu işlev CPSID yönergesini oluşturur; yalnızca içsel olarak kullanılabilir.
_enable void __cdecl _enable(void) Not: ARM platformlarında bu işlev CPSIE yönergesini oluşturur; yalnızca içsel olarak kullanılabilir.
_lrotl unsigned long __cdecl _lrotl(unsigned long, int)
_lrotr unsigned long __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 unsigned short _rotl16(unsigned short _Value, unsigned char _Shift)
_rotl64 unsigned __int64 __cdecl _rotl64(unsigned __int64 _Value, int _Shift)
_rotl8 imzasız char _rotl8(imzasız karakter _Value, imzasız karakter _Shift)
_rotr unsigned int __cdecl _rotr(unsigned int _Value, int _Shift)
_rotr16 unsigned short _rotr16(unsigned short _Value, unsigned char _Shift)
_rotr64 unsigned __int64 __cdecl _rotr64(unsigned __int64 _Value, int _Shift)
_rotr8 unsigned char _rotr8(işaretsiz karakter _Value, imzasız char _Shift)
_setjmpex int __cdecl _setjmpex(jmp_buf)
_WriteBarrier void _WriteBarrier(void)

[En üste dön]

Birbirine kenetlenmiş içler

Birbirine kilitlenmiş iç öğeler, atomik okuma-değiştirme-yazma işlemlerini gerçekleştirmek için kullanılan bir dizi iç bilgidir. Bunlardan bazıları tüm platformlarda ortaktır. Burada ayrı olarak listelenirler çünkü çok fazla sayıda vardır, ancak tanımları çoğunlukla yedekli olduğundan, bunları genel olarak düşünmek daha kolaydır. Adları, tam davranışları türetmek için kullanılabilir.

Aşağıdaki tabloda bittest olmayan birbirine kenetlenmiş içlerin ARM desteği özetlenmiştir. Tablodaki her hücre, satırın en soldaki hücresine işlem adı ve sütunun en üst hücresindeki tür adı öğesine _Interlockedeklenerek türetilen bir ada karşılık gelir. Örneğin, satırın ve sütunun kesişim noktasındaki Xor 8 hücreye _InterlockedXor8 karşılık gelir ve tam olarak desteklenir. Desteklenen işlevlerin çoğu şu isteğe bağlı sonekleri sunar: _acq, _relve _nf. Sonek _acq bir "alma" semantiğini, sonek ise _rel "yayın" semantiğini gösterir. _nf veya "çit yok" soneki ARM'ye özgüdür ve sonraki bölümde ele alın almaktadır.

İşlem 8 16 32 64 P
Ekle Hiçbiri Hiçbiri Tam Tam Hiçbiri
And Tam Tam Tam Tam Hiçbiri
CompareExchange Tam Tam Tam Tam Tam
Azaltma Hiçbiri Tam Tam Tam Hiçbiri
Exchange Kısmi Kısmi Kısmi Kısmi Kısmi
ExchangeAdd Tam Tam Tam Tam Hiçbiri
Artış Hiçbiri Tam Tam Tam Hiçbiri
Or Tam Tam Tam Tam Hiçbiri
Xor Tam Tam Tam Tam Hiçbiri

Anahtar:

  • Tam: düz, _acq, _relve _nf formlarını destekler.

  • Kısmi: düz, _acqve _nf formlarını destekler.

  • Hiçbiri: Desteklenmez

_nf (çit yok) Soneki

_nf veya "çit yok" soneki, işlemin diğer üç biçimden (düz, _acqve _rel) farklı olarak herhangi bir tür bellek engeli gibi davranmadığını ve bunların tümünün bir tür bariyer gibi davrandığını belirtir. Formların _nf olası bir kullanımı, aynı anda birden çok iş parçacığı tarafından güncelleştirilen ancak birden çok iş parçacığı yürütülürken değeri başka bir şekilde kullanılmayan bir istatistik sayacı tutmaktır.

Birbirine kenetlenmiş içlerin listesi

İşlev Adı İşlev Prototipi
_InterlockedAdd long _InterlockedAdd(uzun _volatile *, uzun)
_InterlockedAdd64 __int64 _InterlockedAdd64(__int64 geçici *, __int64)
_InterlockedAdd64_acq __int64 _InterlockedAdd64_acq(__int64 geçici *, __int64)
_InterlockedAdd64_nf __int64 _InterlockedAdd64_nf(__int64 geçici *, __int64)
_InterlockedAdd64_rel __int64 _InterlockedAdd64_rel(__int64 geçici *, __int64)
_InterlockedAdd_acq long _InterlockedAdd_acq(uzun geçici *, uzun)
_InterlockedAdd_nf uzun _InterlockedAdd_nf(uzun geçici *, uzun)
_InterlockedAdd_rel long _InterlockedAdd_rel(uzun geçici *, uzun)
_InterlockedAnd long _InterlockedAnd(uzun geçici *, uzun)
_InterlockedAnd16 short _InterlockedAnd16(kısa geçici *, kısa)
_InterlockedAnd16_acq kısa _InterlockedAnd16_acq(kısa geçici *, kısa)
_InterlockedAnd16_nf kısa _InterlockedAnd16_nf(kısa geçici *, kısa)
_InterlockedAnd16_rel kısa _InterlockedAnd16_rel(kısa geçici *, kısa)
_InterlockedAnd64 __int64 _InterlockedAnd64(__int64 geçici *, __int64)
_InterlockedAnd64_acq __int64 _InterlockedAnd64_acq(__int64 geçici *, __int64)
_InterlockedAnd64_nf __int64 _InterlockedAnd64_nf(__int64 geçici *, __int64)
_InterlockedAnd64_rel __int64 _InterlockedAnd64_rel(__int64 geçici *, __int64)
_InterlockedAnd8 char _InterlockedAnd8(char volatile *, char)
_InterlockedAnd8_acq char _InterlockedAnd8_acq(char volatile *, char)
_InterlockedAnd8_nf char _InterlockedAnd8_nf(char volatile *, char)
_InterlockedAnd8_rel char _InterlockedAnd8_rel(char volatile *, char)
_InterlockedAnd_acq uzun _InterlockedAnd_acq(uzun geçici *, uzun)
_InterlockedAnd_nf long _InterlockedAnd_nf(uzun geçici *, uzun)
_InterlockedAnd_rel long _InterlockedAnd_rel(uzun geçici *, uzun)
_InterlockedCompareExchange long __cdecl _InterlockedCompareExchange(uzun geçici *, uzun, uzun)
_InterlockedCompareExchange16 kısa _InterlockedCompareExchange16(kısa geçici *, kısa, kısa)
_InterlockedCompareExchange16_acq kısa _InterlockedCompareExchange16_acq(kısa geçici *, kısa, kısa)
_InterlockedCompareExchange16_nf kısa _InterlockedCompareExchange16_nf(kısa geçici *, kısa, kısa)
_InterlockedCompareExchange16_rel kısa _InterlockedCompareExchange16_rel(kısa geçici *, kısa, kısa)
_InterlockedCompareExchange64 __int64 _InterlockedCompareExchange64(__int64 geçici *, __int64, __int64)
_InterlockedCompareExchange64_acq __int64 _InterlockedCompareExchange64_acq(__int64 geçici *, __int64, __int64)
_InterlockedCompareExchange64_nf __int64 _InterlockedCompareExchange64_nf(__int64 geçici *, __int64, __int64)
_InterlockedCompareExchange64_rel __int64 _InterlockedCompareExchange64_rel(__int64 geçici *, __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 long _InterlockedCompareExchange_acq(uzun geçici *, uzun, uzun)
_InterlockedCompareExchange_nf uzun _InterlockedCompareExchange_nf(uzun geçici *, uzun, uzun)
_InterlockedCompareExchange_rel long _InterlockedCompareExchange_rel(uzun geçici *, uzun, uzun)
_InterlockedDecrement long __cdecl _InterlockedDecrement(uzun geçici *)
_InterlockedDecrement16 kısa _InterlockedDecrement16(kısa geçici *)
_InterlockedDecrement16_acq kısa _InterlockedDecrement16_acq(kısa geçici *)
_InterlockedDecrement16_nf kısa _InterlockedDecrement16_nf(kısa geçici *)
_InterlockedDecrement16_rel kısa _InterlockedDecrement16_rel(kısa geçici *)
_InterlockedDecrement64 __int64 _InterlockedDecrement64(__int64 geçici *)
_InterlockedDecrement64_acq __int64 _InterlockedDecrement64_acq(__int64 geçici *)
_InterlockedDecrement64_nf __int64 _InterlockedDecrement64_nf(__int64 geçici *)
_InterlockedDecrement64_rel __int64 _InterlockedDecrement64_rel(__int64 geçici *)
_InterlockedDecrement_acq long _InterlockedDecrement_acq(long volatile *)
_InterlockedDecrement_nf long _InterlockedDecrement_nf(uzun geçici *)
_InterlockedDecrement_rel long _InterlockedDecrement_rel(long volatile *)
_InterlockedExchange long __cdecl _InterlockedExchange(uzun geçici * _Target, uzun)
_InterlockedExchange16 kısa _InterlockedExchange16(kısa geçici * _Target, kısa)
_InterlockedExchange16_acq kısa _InterlockedExchange16_acq(kısa geçici * _Target, kısa)
_InterlockedExchange16_nf short _InterlockedExchange16_nf(kısa geçici * _Target, kısa)
_InterlockedExchange64 __int64 _InterlockedExchange64(__int64 geçici * _Target, __int64)
_InterlockedExchange64_acq __int64 _InterlockedExchange64_acq(__int64 geçici * _Target, __int64)
_InterlockedExchange64_nf __int64 _InterlockedExchange64_nf(__int64 geçici * _Target, __int64)
_InterlockedExchange8 char _InterlockedExchange8(char volatile * _Target, char)
_InterlockedExchange8_acq char _InterlockedExchange8_acq(char volatile * _Target, char)
_InterlockedExchange8_nf char _InterlockedExchange8_nf(char volatile * _Target, char)
_InterlockedExchangeAdd long __cdecl _InterlockedExchangeAdd(uzun geçici *, uzun)
_InterlockedExchangeAdd16 kısa _InterlockedExchangeAdd16(kısa geçici *, kısa)
_InterlockedExchangeAdd16_acq kısa _InterlockedExchangeAdd16_acq(kısa geçici *, kısa)
_InterlockedExchangeAdd16_nf kısa _InterlockedExchangeAdd16_nf(kısa geçici *, kısa)
_InterlockedExchangeAdd16_rel kısa _InterlockedExchangeAdd16_rel(kısa geçici *, kısa)
_InterlockedExchangeAdd64 __int64 _InterlockedExchangeAdd64(__int64 geçici *, __int64)
_InterlockedExchangeAdd64_acq __int64 _InterlockedExchangeAdd64_acq(__int64 geçici *, __int64)
_InterlockedExchangeAdd64_nf __int64 _InterlockedExchangeAdd64_nf(__int64 geçici *, __int64)
_InterlockedExchangeAdd64_rel __int64 _InterlockedExchangeAdd64_rel(__int64 geçici *, __int64)
_InterlockedExchangeAdd8 char _InterlockedExchangeAdd8(char volatile *, char)
_InterlockedExchangeAdd8_acq char _InterlockedExchangeAdd8_acq(char volatile *, char)
_InterlockedExchangeAdd8_nf char _InterlockedExchangeAdd8_nf(char volatile *, char)
_InterlockedExchangeAdd8_rel char _InterlockedExchangeAdd8_rel(char volatile *, char)
_InterlockedExchangeAdd_acq long _InterlockedExchangeAdd_acq(uzun geçici *, uzun)
_InterlockedExchangeAdd_nf uzun _InterlockedExchangeAdd_nf(uzun geçici *, uzun)
_InterlockedExchangeAdd_rel long _InterlockedExchangeAdd_rel(uzun geçici *, uzun)
_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 long _InterlockedExchange_acq(uzun geçici * _Target, uzun)
_InterlockedExchange_nf long _InterlockedExchange_nf(uzun geçici * _Target, uzun)
_InterlockedIncrement long __cdecl _InterlockedIncrement(long volatile *)
_InterlockedIncrement16 kısa _InterlockedIncrement16(kısa geçici *)
_InterlockedIncrement16_acq kısa _InterlockedIncrement16_acq(kısa geçici *)
_InterlockedIncrement16_nf kısa _InterlockedIncrement16_nf(kısa geçici *)
_InterlockedIncrement16_rel short _InterlockedIncrement16_rel(kısa geçici *)
_InterlockedIncrement64 __int64 _InterlockedIncrement64(__int64 geçici *)
_InterlockedIncrement64_acq __int64 _InterlockedIncrement64_acq(__int64 geçici *)
_InterlockedIncrement64_nf __int64 _InterlockedIncrement64_nf(__int64 geçici *)
_InterlockedIncrement64_rel __int64 _InterlockedIncrement64_rel(__int64 geçici *)
_InterlockedIncrement_acq long _InterlockedIncrement_acq(uzun geçici *)
_InterlockedIncrement_nf uzun _InterlockedIncrement_nf(uzun geçici *)
_InterlockedIncrement_rel uzun _InterlockedIncrement_rel(uzun geçici *)
_InterlockedOr uzun _InterlockedOr(uzun geçici *, uzun)
_InterlockedOr16 kısa _InterlockedOr16(kısa geçici *, kısa)
_InterlockedOr16_acq short _InterlockedOr16_acq(kısa geçici *, kısa)
_InterlockedOr16_nf kısa _InterlockedOr16_nf(kısa geçici *, kısa)
_InterlockedOr16_rel kısa _InterlockedOr16_rel(kısa geçici *, kısa)
_InterlockedOr64 __int64 _InterlockedOr64(__int64 geçici *, __int64)
_InterlockedOr64_acq __int64 _InterlockedOr64_acq(__int64 geçici *, __int64)
_InterlockedOr64_nf __int64 _InterlockedOr64_nf(__int64 geçici *, __int64)
_InterlockedOr64_rel __int64 _InterlockedOr64_rel(__int64 geçici *, __int64)
_InterlockedOr8 char _InterlockedOr8(char volatile *, char)
_InterlockedOr8_acq char _InterlockedOr8_acq(char volatile *, char)
_InterlockedOr8_nf char _InterlockedOr8_nf(char volatile *, char)
_InterlockedOr8_rel char _InterlockedOr8_rel(char volatile *, char)
_InterlockedOr_acq uzun _InterlockedOr_acq(uzun geçici *, uzun)
_InterlockedOr_nf long _InterlockedOr_nf(uzun geçici *, uzun)
_InterlockedOr_rel uzun _InterlockedOr_rel(uzun geçici *, uzun)
_InterlockedXor long _InterlockedXor(uzun geçici *, uzun)
_InterlockedXor16 kısa _InterlockedXor16(kısa geçici *, kısa)
_InterlockedXor16_acq kısa _InterlockedXor16_acq(kısa geçici *, kısa)
_InterlockedXor16_nf kısa _InterlockedXor16_nf(kısa geçici *, kısa)
_InterlockedXor16_rel kısa _InterlockedXor16_rel(kısa geçici *, kısa)
_InterlockedXor64 __int64 _InterlockedXor64(__int64 geçici *, __int64)
_InterlockedXor64_acq __int64 _InterlockedXor64_acq(__int64 geçici *, __int64)
_InterlockedXor64_nf __int64 _InterlockedXor64_nf(__int64 geçici *, __int64)
_InterlockedXor64_rel __int64 _InterlockedXor64_rel(__int64 geçici *, __int64)
_InterlockedXor8 char _InterlockedXor8(char volatile *, char)
_InterlockedXor8_acq char _InterlockedXor8_acq(char volatile *, char)
_InterlockedXor8_nf char _InterlockedXor8_nf(char volatile *, char)
_InterlockedXor8_rel char _InterlockedXor8_rel(char volatile *, char)
_InterlockedXor_acq uzun _InterlockedXor_acq(uzun geçici *, uzun)
_InterlockedXor_nf long _InterlockedXor_nf(uzun geçici *, uzun)
_InterlockedXor_rel long _InterlockedXor_rel(uzun geçici *, uzun)

[En üste dön]

_interlockedbittest iç bilgileri

Düz kilitlenmiş bit testi iç özellikleri tüm platformlarda ortaktır. ARM, bu makalenin önceki bölümlerinde _nf (çit yok) Soneki'nde açıklandığı gibi yalnızca bir işlemin bariyer semantiğini değiştiren , _nf _relve değişkenlerini ekler_acq.

İşlev Adı İşlev Prototipi
_interlockedbittestandreset işaretsiz char _interlockedbittestandreset(uzun geçici *, uzun)
_interlockedbittestandreset_acq işaretsiz char _interlockedbittestandreset_acq(uzun geçici *, uzun)
_interlockedbittestandreset_nf işaretsiz char _interlockedbittestandreset_nf(uzun geçici *, uzun)
_interlockedbittestandreset_rel işaretsiz char _interlockedbittestandreset_rel(uzun geçici *, uzun)
_interlockedbittestandset işaretsiz char _interlockedbittestandset(uzun geçici *, uzun)
_interlockedbittestandset_acq işaretsiz char _interlockedbittestandset_acq(uzun geçici *, uzun)
_interlockedbittestandset_nf işaretsiz char _interlockedbittestandset_nf(uzun geçici *, uzun)
_interlockedbittestandset_rel işaretsiz char _interlockedbittestandset_rel(uzun geçici *, uzun)

[En üste dön]

Ayrıca bkz.

Derleyici iç bilgileri
ARM64 iç bilgileri
ARM assembler başvurusu
C++ dil başvurusu