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.h
sağ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 Location
belirtilen 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
, , crm
ve 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
, opcode1
ve 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 _Interlocked
eklenerek 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
, _rel
ve _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
,_rel
ve_nf
formlarını destekler.Kısmi: düz,
_acq
ve_nf
formlarını destekler.Hiçbiri: Desteklenmez
_nf (çit yok) Soneki
_nf
veya "çit yok" soneki, işlemin diğer üç biçimden (düz, _acq
ve _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
_rel
ve 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