ARM 內建函式
Visual C++ 編譯器在 ARM 結構使下列內建可用。如需和的詳細資訊,請 ARM 結構參考手冊 參閱和 ARM 組譯工具指南 中的 Infocenter 網站上。
氖
ARM 指令集的霓虹向量延伸提供唯一的 x86 和 x64 架構處理器通用的表示多資料類似那些在 MMX (SIMD) 的功能和 SSE 向量指令集。
霓虹內建在標頭檔支援 arm_neon.h,所提供。Visual C++ 編譯器支援霓虹本質類似的編譯器,在 飛出視窗的編譯器 toolchain,版本 4.1 編譯器參考 ARM Infocenter 網站的附錄 G 文件。
Visual C++ 編譯器和 ARM 編譯器之間的主要差異是 Visual C++ 編譯器將 vldX 和 vstX 向量載入和儲存指示的 _ex 變數。_ex 變數會指定指標引數的對齊的額外參數,但其非_ex 對應原來相同。
ARM 特定內建清單
函式名稱 |
指令 |
函式原型 |
---|---|---|
_arm_smlal |
SMLAL |
_arm_smlal __int64 (__int64 _RdHiLo int _Rn _Rm, int) |
_arm_umlal |
UMLAL |
_arm_umlal unsigned __int64 (unsigned __int64 _RdHiLo、unsigned int _Rn,不帶正負號的整數 _Rm) |
_arm_clz |
CLZ |
不帶正負號的整數 _arm_clz (不帶正負號的整數 _Rm) |
_arm_qadd |
QADD |
int _arm_qadd (int, int _Rm _Rn) |
_arm_qdadd |
QDADD |
int _arm_qdadd (int, int _Rm _Rn) |
_arm_qdsub |
QDSUB |
int _arm_qdsub (int, int _Rm _Rn) |
_arm_qsub |
QSUB |
int _arm_qsub (int, int _Rm _Rn) |
_arm_smlabb |
SMLABB |
int _arm_smlabb (int _Rn int _Rm _Ra, int) |
_arm_smlabt |
SMLABT |
int _arm_smlabt (int _Rn int _Rm _Ra, int) |
_arm_smlatb |
SMLATB |
int _arm_smlatb (int _Rn int _Rm _Ra, int) |
_arm_smlatt |
SMLATT |
int _arm_smlatt (int _Rn int _Rm _Ra, int) |
_arm_smlalbb |
SMLALBB |
__int64 _arm_smlalbb (__int64 _RdHiLo int _Rn _Rm, int) |
_arm_smlalbt |
SMLALBT |
__int64 _arm_smlalbt (__int64 _RdHiLo int _Rn _Rm, int) |
_arm_smlaltb |
SMLALTB |
__int64 _arm_smlaltb (__int64 _RdHiLo int _Rn _Rm, int) |
_arm_smlaltt |
SMLALTT |
__int64 _arm_smlaltt (__int64 _RdHiLo int _Rn _Rm, int) |
_arm_smlawb |
SMLAWB |
int _arm_smlawb (int _Rn int _Rm _Ra, int) |
_arm_smlawt |
SMLAWT |
int _arm_smlawt (int _Rn int _Rm _Ra, int) |
_arm_smulbb |
SMULBB |
int _arm_smulbb (int, int _Rn _Rm) |
_arm_smulbt |
SMULBT |
int _arm_smulbt (int, int _Rn _Rm) |
_arm_smultb |
SMULTB |
int _arm_smultb (int, int _Rn _Rm) |
_arm_smultt |
SMULTT |
int _arm_smultt (int, int _Rn _Rm) |
_arm_smulwb |
SMULWB |
int _arm_smulwb (int, int _Rn _Rm) |
_arm_smulwt |
SMULWT |
int _arm_smulwt (int, int _Rn _Rm) |
_arm_sadd16 |
SADD16 |
int _arm_sadd16 (int, int _Rn _Rm) |
_arm_sadd8 |
SADD8 |
int _arm_sadd8 (int, int _Rn _Rm) |
_arm_sasx |
SASX |
int _arm_sasx (int, int _Rn _Rm) |
_arm_ssax |
SSAX |
int _arm_ssax (int, int _Rn _Rm) |
_arm_ssub16 |
SSUB16 |
int _arm_ssub16 (int, int _Rn _Rm) |
_arm_ssub8 |
SSUB8 |
int _arm_ssub8 (int, int _Rn _Rm) |
_arm_shadd16 |
SHADD16 |
int _arm_shadd16 (int, int _Rn _Rm) |
_arm_shadd8 |
SHADD8 |
int _arm_shadd8 (int, int _Rn _Rm) |
_arm_shasx |
SHASX |
int _arm_shasx (int, int _Rn _Rm) |
_arm_shsax |
SHSAX |
int _arm_shsax (int, int _Rn _Rm) |
_arm_shsub16 |
SHSUB16 |
int _arm_shsub16 (int, int _Rn _Rm) |
_arm_shsub8 |
SHSUB8 |
int _arm_shsub8 (int, int _Rn _Rm) |
_arm_qadd16 |
QADD16 |
int _arm_qadd16 (int, int _Rn _Rm) |
_arm_qadd8 |
QADD8 |
int _arm_qadd8 (int, int _Rn _Rm) |
_arm_qasx |
QASX |
int _arm_qasx (int, int _Rn _Rm) |
_arm_qsax |
QSAX |
int _arm_qsax (int, int _Rn _Rm) |
_arm_qsub16 |
QSUB16 |
int _arm_qsub16 (int, int _Rn _Rm) |
_arm_qsub8 |
QSUB8 |
int _arm_qsub8 (int, int _Rn _Rm) |
_arm_uadd16 |
UADD16 |
不帶正負號的整數 _arm_uadd16 (不帶正負號的整數, _Rn unsigned int _Rm) |
_arm_uadd8 |
UADD8 |
不帶正負號的整數 _arm_uadd8 (不帶正負號的整數, _Rn unsigned int _Rm) |
_arm_uasx |
UASX |
不帶正負號的整數 _arm_uasx (不帶正負號的整數, _Rn unsigned int _Rm) |
_arm_usax |
USAX |
不帶正負號的整數 _arm_usax (不帶正負號的整數, _Rn unsigned int _Rm) |
_arm_usub16 |
USUB16 |
不帶正負號的整數 _arm_usub16 (不帶正負號的整數, _Rn unsigned int _Rm) |
_arm_usub8 |
USUB8 |
不帶正負號的整數 _arm_usub8 (不帶正負號的整數, _Rn unsigned int _Rm) |
_arm_uhadd16 |
UHADD16 |
不帶正負號的整數 _arm_uhadd16 (不帶正負號的整數, _Rn unsigned int _Rm) |
_arm_uhadd8 |
UHADD8 |
不帶正負號的整數 _arm_uhadd8 (不帶正負號的整數, _Rn unsigned int _Rm) |
_arm_uhasx |
UHASX |
不帶正負號的整數 _arm_uhasx (不帶正負號的整數, _Rn unsigned int _Rm) |
_arm_uhsax |
UHSAX |
不帶正負號的整數 _arm_uhsax (不帶正負號的整數, _Rn unsigned int _Rm) |
_arm_uhsub16 |
UHSUB16 |
不帶正負號的整數 _arm_uhsub16 (不帶正負號的整數, _Rn unsigned int _Rm) |
_arm_uhsub8 |
UHSUB8 |
不帶正負號的整數 _arm_uhsub8 (不帶正負號的整數, _Rn unsigned int _Rm) |
_arm_uqadd16 |
UQADD16 |
不帶正負號的整數 _arm_uqadd16 (不帶正負號的整數, _Rn unsigned int _Rm) |
_arm_uqadd8 |
UQADD8 |
不帶正負號的整數 _arm_uqadd8 (不帶正負號的整數, _Rn unsigned int _Rm) |
_arm_uqasx |
UQASX |
不帶正負號的整數 _arm_uqasx (不帶正負號的整數, _Rn unsigned int _Rm) |
_arm_uqsax |
UQSAX |
不帶正負號的整數 _arm_uqsax (不帶正負號的整數, _Rn unsigned int _Rm) |
_arm_uqsub16 |
UQSUB16 |
不帶正負號的整數 _arm_uqsub16 (不帶正負號的整數, _Rn unsigned int _Rm) |
_arm_uqsub8 |
UQSUB8 |
不帶正負號的整數 _arm_uqsub8 (不帶正負號的整數, _Rn unsigned int _Rm) |
_arm_sxtab |
SXTAB |
int _arm_sxtab _Rn (int, int _Rm unsigned int _Rotation) |
_arm_sxtab16 |
SXTAB16 |
int _arm_sxtab16 _Rn (int, int _Rm unsigned int _Rotation) |
_arm_sxtah |
SXTAH |
int _arm_sxtah _Rn (int, int _Rm unsigned int _Rotation) |
_arm_uxtab |
UXTAB |
不帶正負號的整數 _arm_uxtab (不帶正負號的整數 _Rn、unsigned int _Rm,不帶正負號的整數 _Rotation) |
_arm_uxtab16 |
UXTAB16 |
不帶正負號的整數 _arm_uxta16b (不帶正負號的整數 _Rn、unsigned int _Rm,不帶正負號的整數 _Rotation) |
_arm_uxtah |
UXTAH |
不帶正負號的整數 _arm_uxtah (不帶正負號的整數 _Rn、unsigned int _Rm,不帶正負號的整數 _Rotation) |
_arm_sxtb |
SXTB |
_arm_sxtb (int, int _Rn unsigned int _Rotation) |
_arm_sxtb16 |
SXTB16 |
_arm_sxtb16 (int, int _Rn unsigned int _Rotation) |
_arm_sxth |
SXTH |
_arm_sxth (int, int _Rn unsigned int _Rotation) |
_arm_uxtb |
UXTB |
不帶正負號的整數 _arm_uxtb (不帶正負號的整數, _Rn unsigned int _Rotation) |
_arm_uxtb16 |
UXTB16 |
不帶正負號的整數 _arm_uxtb16 (不帶正負號的整數, _Rn unsigned int _Rotation) |
_arm_uxth |
UXTH |
不帶正負號的整數 _arm_uxth (不帶正負號的整數, _Rn unsigned int _Rotation) |
_arm_pkhbt |
PKHBT |
int _arm_pkhbt _Rn (int, int _Rm unsigned int _Lsl_imm) |
_arm_pkhtb |
PKHTB |
int _arm_pkhtb _Rn (int, int _Rm unsigned int _Asr_imm) |
_arm_usad8 |
USAD8 |
不帶正負號的整數 _arm_usad8 (不帶正負號的整數, _Rn unsigned int _Rm) |
_arm_usada8 |
USADA8 |
不帶正負號的整數 _arm_usada8 (不帶正負號的整數 _Rn、unsigned int _Rm,不帶正負號的整數 _Ra) |
_arm_ssat |
SSAT |
int _arm_ssat (不帶正負號的整數 _Sat_imm、_int _Rn、_ARMINTR_SHIFT_T _Shift_type,不帶正負號的整數 _Shift_imm) |
_arm_usat |
USAT |
int _arm_usat (不帶正負號的整數 _Sat_imm、_int _Rn、_ARMINTR_SHIFT_T _Shift_type,不帶正負號的整數 _Shift_imm) |
_arm_ssat16 |
SSAT16 |
int _arm_ssat16 (不帶正負號的整數 _Sat_imm, _int _Rn) |
_arm_usat16 |
USAT16 |
int _arm_usat16 (不帶正負號的整數 _Sat_imm, _int _Rn) |
_arm_rev |
REV |
不帶正負號的整數 _arm_rev (不帶正負號的整數 _Rm) |
_arm_rev16 |
REV16 |
不帶正負號的整數 _arm_rev16 (不帶正負號的整數 _Rm) |
_arm_revsh |
REVSH |
不帶正負號的整數 _arm_revsh (不帶正負號的整數 _Rm) |
_arm_smlad |
SMLAD |
int _arm_smlad (int _Rn int _Rm _Ra, int) |
_arm_smladx |
SMLADX |
int _arm_smladx (int _Rn int _Rm _Ra, int) |
_arm_smlsd |
SMLSD |
int _arm_smlsd (int _Rn int _Rm _Ra, int) |
_arm_smlsdx |
SMLSDX |
int _arm_smlsdx (int _Rn int _Rm _Ra, int) |
_arm_smmla |
SMMLA |
int _arm_smmla (int _Rn int _Rm _Ra, int) |
_arm_smmlar |
SMMLAR |
_arm_smmlar 的 int (int _Rn int _Rm _Ra, int) |
_arm_smmls |
SMMLS |
int _arm_smmls (int _Rn int _Rm _Ra, int) |
_arm_smmlsr |
SMMLSR |
int _arm_smmlsr (int _Rn int _Rm _Ra, int) |
_arm_smmul |
SMMUL |
int _arm_smmul (int, int _Rn _Rm) |
_arm_smmulr |
SMMULR |
int _arm_smmulr (int, int _Rn _Rm) |
_arm_smlald |
SMLALD |
__int64 _arm_smlald (__int64 _RdHiLo int _Rn _Rm, int) |
_arm_smlaldx |
SMLALDX |
__int64 _arm_smlaldx (__int64 _RdHiLo int _Rn _Rm, int) |
_arm_smlsld |
SMLSLD |
__int64 _arm_smlsld (__int64 _RdHiLo int _Rn _Rm, int) |
_arm_smlsldx |
SMLSLDX |
__int64 _arm_smlsldx (__int64 _RdHiLo int _Rn _Rm, int) |
_arm_smuad |
SMUAD |
int _arm_smuad (int, int _Rn _Rm) |
_arm_smuadx |
SMUADX |
int _arm_muadxs (int, int _Rn _Rm) |
_arm_smusd |
SMUSD |
int _arm_smusd (int, int _Rn _Rm) |
_arm_smusdx |
SMUSDX |
int _arm_smusdx (int, int _Rn _Rm) |
_arm_smull |
SMULL |
__int64 _arm_smull _Rn (int, int _Rm) |
_arm_umull |
UMULL |
unsigned __int64 _arm_umull (不帶正負號的整數, _Rn unsigned int _Rm) |
_arm_umaal |
UMAAL |
_arm_umaal unsigned __int64 (不帶正負號的整數 _RdLo、unsigned int _RdHi、unsigned int _Rn,不帶正負號的整數 _Rm) |
_arm_bfc |
BFC |
不帶正負號的整數 _arm_bfc (不帶正負號的整數 _Rd、unsigned int _Lsb,不帶正負號的整數 _Width) |
_arm_bfi |
BFI |
不帶正負號的整數 _arm_bfi (不帶正負號的整數 _Rd、unsigned int _Rn、unsigned int _Lsb,不帶正負號的整數 _Width) |
_arm_rbit |
RBIT |
不帶正負號的整數 _arm_rbit (不帶正負號的整數 _Rm) |
_arm_sbfx |
SBFX |
int _arm_sbfx (int _Rn、unsigned int _Lsb,不帶正負號的整數 _Width) |
_arm_ubfx |
UBFX |
不帶正負號的整數 _arm_ubfx (不帶正負號的整數 _Rn、unsigned int _Lsb,不帶正負號的整數 _Width) |
_arm_sdiv |
SDIV |
int _arm_sdiv (int, int _Rn _Rm) |
_arm_udiv |
UDIV |
不帶正負號的整數 _arm_udiv (不帶正負號的整數, _Rn unsigned int _Rm) |
__cps |
CPS |
空 __cps (不帶正負號的整數 _Ops、unsigned int _Flags,不帶正負號的整數 _Mode) |
__dmb |
DMB |
空 __dmb (unsigned int _Type) 插入記憶體屏障作業至指令資料流。_Type 參數指定屏障強制執行的這種限制。 如需可以強制執行這種限制的詳細資訊,請參閱 記憶體屏障限制。 |
__dsb |
DSB |
空 __dsb (不帶正負號的整數 _Type) 插入記憶體屏障作業至指令資料流。_Type 參數指定屏障強制執行的這種限制。 如需可以強制執行這種限制的詳細資訊,請參閱 記憶體屏障限制。 |
__isb |
ISB |
空 __isb (不帶正負號的整數 _Type) 插入記憶體屏障作業至指令資料流。_Type 參數指定屏障強制執行的這種限制。 如需可以強制執行這種限制的詳細資訊,請參閱 記憶體屏障限制。 |
__emit |
空 __emit (不帶正負號的 __int32 Opcode) 插入指定的指令到編譯器輸出的資料流。 opcode 的值必須是在編譯時期常數運算式。指令字的大小是 16 位元,而最高 16 位元會忽略 opcode 。 在插入的指示執行前,編譯器並不會嘗試解譯 opcode 內容,並不保證的 CPU 或記憶體狀態。 編譯器假設, CPU 和記憶體狀態未變更,在插入的指示執行之後。因此,變更狀態的指示會對編譯器所產生的一般程式碼的損害影響。 因此,使用 emit 只插入影響一 CPU 說明的指示,編譯器處理序不為範例,處理器通常狀態或實作使用 declspec(naked),宣告的函式。 |
|
__hvc |
HVC |
unsigned int __hvc (不帶正負號的整數,…) |
__iso_volatile_load16 |
__int16 __iso_volatile_load16 (const-volatile __int16 *) 如需詳細資訊,請參閱instrinsics __iso_volatile_load/store。 |
|
__iso_volatile_load32 |
__int32 __iso_volatile_load32 (const-volatile __int32 *) 如需詳細資訊,請參閱instrinsics __iso_volatile_load/store。 |
|
__iso_volatile_load64 |
__int64 __iso_volatile_load64 (const-volatile __int64 *) 如需詳細資訊,請參閱instrinsics __iso_volatile_load/store。 |
|
__iso_volatile_load8 |
__int8 __iso_volatile_load8 (const-volatile __int8 *) 如需詳細資訊,請參閱instrinsics __iso_volatile_load/store。 |
|
__iso_volatile_store16 |
空 __iso_volatile_store16 (Volatile __int16 *, __int16) 如需詳細資訊,請參閱instrinsics __iso_volatile_load/store。 |
|
__iso_volatile_store32 |
空 __iso_volatile_store32 (Volatile __int32 *, __int32) 如需詳細資訊,請參閱instrinsics __iso_volatile_load/store。 |
|
__iso_volatile_store64 |
空 __iso_volatile_store64 (Volatile __int64 *, __int64) 如需詳細資訊,請參閱instrinsics __iso_volatile_load/store。 |
|
__iso_volatile_store8 |
空 __iso_volatile_store8 (Volatile __int8 *, __int8) 如需詳細資訊,請參閱instrinsics __iso_volatile_load/store。 |
|
__ldrexd |
LDREXD |
__int64 __ldrexd (const-volatile __int64 *) |
__prefetch |
PLD |
為空 __prefetch (空的常數*) 提供一個 PLD 記憶體提示給在所指定位址的記憶體可能很快存取的系統。有些系統可以選擇最佳化該記憶體存取模式中加入執行階段效能。然而,從 C++ 語言檢視,函式並不明顯的效果,而且不會執行任何動作。 |
__rdpmccntr64 |
unsigned __int64 __rdpmccntr64 (void) |
|
__sev |
SEV |
空 __sev (void) |
__static_assert |
空 __static_assert (int, const char *) |
|
__swi |
SVC |
unsigned int __swi (不帶正負號的整數,…) |
__trap |
BKPT |
int __trap (int,…) |
__wfe |
WFE |
空 __wfe (void) |
__wfi |
WFI |
空 __wfi (void) |
_AddSatInt |
QADD |
int _AddSatInt (int, int) |
_CopyDoubleFromInt64 |
雙重 _CopyDoubleFromInt64 (__int64) |
|
_CopyFloatFromInt32 |
浮點 _CopyFloatFromInt32 (__int32) |
|
_CopyInt32FromFloat |
__int32 _CopyInt32FromFloat (浮點數) |
|
_CopyInt64FromDouble |
__int64 _CopyInt64FromDouble (Double) |
|
_CountLeadingOnes |
不帶正負號的整數 (_CountLeadingOnes unsigned long) |
|
_CountLeadingOnes64 |
不帶正負號的整數 (_CountLeadingOnes64 unsigned __int64) |
|
_CountLeadingSigns |
不帶正負號的整數 _CountLeadingSigns (長度) |
|
_CountLeadingSigns64 |
不帶正負號的整數 (_CountLeadingSigns64 __int64) |
|
_CountLeadingZeros |
不帶正負號的整數 (_CountLeadingZeros unsigned long) |
|
_CountLeadingZeros64 |
不帶正負號的整數 (_CountLeadingZeros64 unsigned __int64) |
|
_CountOneBits |
不帶正負號的整數 (_CountOneBits unsigned long) |
|
_CountOneBits64 |
不帶正負號的整數 (_CountOneBits64 unsigned __int64) |
|
_DAddSatInt |
QDADD |
int _DAddSatInt (int, int) |
_DSubSatInt |
QDSUB |
int _DSubSatInt (int, int) |
_isunordered |
_isunordered 的 int (double, double) |
|
_isunorderedf |
int _isunorderedf (float, float) |
|
_MoveFromCoprocessor |
MRC |
不帶正負號的整數 (_MoveFromCoprocessor unsigned int、unsigned int、unsigned int、unsigned int, unsigned int) 使用副處理器資料傳輸指令,讀取 ARM 處理器的資料。如需詳細資訊,請參閱_MoveFromCoprocessor, _MoveFromCoprocessor2。 |
_MoveFromCoprocessor2 |
MRC2 |
不帶正負號的整數 (_MoveFromCoprocessor2 unsigned int、unsigned int、unsigned int、unsigned int, unsigned int) 使用副處理器資料傳輸指令,讀取 ARM 處理器的資料。如需詳細資訊,請參閱_MoveFromCoprocessor, _MoveFromCoprocessor2。 |
_MoveFromCoprocessor64 |
MRRC |
unsigned __int64 _MoveFromCoprocessor64 (unsigned int、unsigned int, unsigned int) 使用副處理器資料傳輸指令,讀取 ARM 處理器的資料。如需詳細資訊,請參閱_MoveFromCoprocessor64。 |
_MoveToCoprocessor |
MCR |
空 _MoveToCoprocessor (unsigned int、unsigned int、unsigned int、unsigned int、unsigned int, unsigned int) 使用副處理器資料傳輸指令,讀取 ARM 處理器的資料。如需詳細資訊,請參閱_MoveToCoprocessor, _MoveToCoprocessor2。 |
_MoveToCoprocessor2 |
MCR2 |
空 _MoveToCoprocessor2 (unsigned int、unsigned int、unsigned int、unsigned int、unsigned int, unsigned int) 使用副處理器資料傳輸指令,讀取 ARM 處理器的資料。如需詳細資訊,請參閱_MoveToCoprocessor, _MoveToCoprocessor2。 |
_MoveToCoprocessor64 |
MCRR |
空 _MoveToCoprocessor64 (unsigned __int64、unsigned int、unsigned int, unsigned int) 使用副處理器資料傳輸指令,讀取 ARM 處理器的資料。如需詳細資訊,請參閱_MoveToCoprocessor64。 |
_MulHigh |
長 _MulHigh (long, long) |
|
_MulUnsignedHigh |
unsigned long _MulUnsignedHigh (Unsigned Long, unsigned long) |
|
_ReadBankedReg |
夫人 |
int _ReadBankedReg (int _Reg) |
_ReadStatusReg |
夫人 |
int _ReadStatusReg (int) |
_SubSatInt |
QSUB |
int _SubSatInt (int, int) |
_WriteBankedReg |
MSR |
空 _WriteBankedReg (int, int _Value _Reg) |
_WriteStatusReg |
MSR |
空 _WriteStatusReg (int, int) |
[氖]
記憶體屏障限制
內建函式 __dmb (資料記憶體屏障), __dsb (資料同步阻礙) 和 __isb (表示同步阻礙) 使用受到作業所影響的下列預先定義的值指定記憶體屏障限制根據共用的網域和和種類存取。
限制值 |
描述 |
---|---|
_ARM_BARRIER_SY |
完整的系統,讀取和寫入。 |
_ARM_BARRIER_ST |
完整的系統,只寫入。 |
_ARM_BARRIER_ISH |
內部可共用,讀取和寫入。 |
_ARM_BARRIER_ISHST |
內部可共用,只寫入。 |
_ARM_BARRIER_NSH |
無法共用,讀取和寫入。 |
_ARM_BARRIER_NSHST |
無法共用,只寫入。 |
_ARM_BARRIER_OSH |
外部可共用,讀取和寫入。 |
_ARM_BARRIER_OSHST |
外部可共用,只寫入。 |
對於 __isb 本質,目前有效的唯一的限制是 _ARM_BARRIER_SY;其他值則由結構保留。
instrinsics __iso_volatile_load/store
這些內建函式明確地執行不受編譯器最佳化規範的載入和儲存。
__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)
參數
Location
讀取或寫入的記憶體位置的位址。Value (只存放區內建)
要寫入的值給指定的記憶體位置。
傳回值 (只載入本質)
Location所指定之記憶體位置的值。
備註
您可以使用 __iso_volatile_load8/16/32/64 和 __iso_volatile_store8/16/32/64 內建明確執行不受編譯器最佳化規範的記憶體存取。編譯器無法取消,複合或變更這些作業相對順序,不過,它不會產生隱含硬體記憶體屏障。因此,硬體可能仍然重新排列在多執行緒的可預見的記憶體存取。更明確地說,這些本質與下列運算式相當於如編譯 /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;
請注意本質接受變動指標容納 volatile 變數。不過,不需要或建議使用 Volatile 指標做為引數;,如果使用,這些作業語意完全相同的一組規則,非 Volatile 的型別。
如需 /volatile:iso 命令列引數的詳細資訊,請參閱 /volatile (volatile 關鍵字轉譯)。
_MoveFromCoprocessor, _MoveFromCoprocessor2
使用副處理器資料傳輸指令,這些內建函式讀取從 ARM 處理器的資料。
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
);
參數
coproc
範圍從 0 到 15 的處理器數目。opcode1
範圍從 0 到 7 的處理器特定 opcodecrn
共處理器暫存器編號,範圍從 0 到 15,指定第一個運算元的指示。crm
共處理器暫存器編號,範圍從 0 到 15,指定額外的來源或目的端的運算元。opcode2
範圍從 0 到 7. 的其他副處理器特定 opcode。
傳回值
從處理器讀取的值。
備註
這個內建全部五個參數的值必須是在編譯時期常數運算式。
_MoveFromCoprocessor 表示使用 MRC; _MoveFromCoprocessor2 MRC2 用途。參數對應至輸入直接輸入指令字的位元欄位。參數的解譯是副處理器相依。如需詳細資訊,請參閱該處理器的方針。
_MoveFromCoprocessor64
使用副處理器資料傳輸指令,讀取 ARM 處理器的資料。
unsigned __int64 _MoveFromCoprocessor64(
unsigned int coproc,
unsigned int opcode1,
unsigned int crm,
);
參數
coproc
範圍從 0 到 15 的處理器數目。opcode1
範圍從 0 到 15 的處理器特定 opcode。crm
共處理器暫存器編號,範圍從 0 到 15,指定額外的來源或目的端的運算元。
傳回值
從處理器讀取的值。
備註
這個內建所有三個參數的值必須是在編譯時期常數運算式。
_MoveFromCoprocessor64 使用 MRRC 指示。參數對應至輸入直接輸入指令字的位元欄位。參數的解譯是副處理器相依。如需詳細資訊,請參閱該處理器的方針。
_MoveToCoprocessor, _MoveToCoprocessor2
使用副處理器資料傳輸指令,這些內建函式給 ARM 處理器寫入資料。
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
);
參數
value
將處理器要寫入的值。coproc
範圍從 0 到 15 的處理器數目。opcode1
範圍從 0 到 7. 的處理器特定 opcode。crn
共處理器暫存器編號,範圍從 0 到 15,指定第一個運算元的指示。crm
共處理器暫存器編號,範圍從 0 到 15,指定額外的來源或目的端的運算元。opcode2
範圍從 0 到 7. 的其他副處理器特定 opcode。
傳回值
無。
備註
coproc、 opcode1、 crn、 crm和這個內建 opcode2 參數的值必須是在編譯時期常數運算式。
_MoveToCoprocessor 表示使用 MCR; _MoveToCoprocessor2 MCR2 用途。參數對應至輸入直接輸入指令字的位元欄位。參數的解譯是副處理器相依。如需詳細資訊,請參閱該處理器的方針。
_MoveToCoprocessor64
使用副處理器資料傳輸指令,這些內建函式給 ARM 處理器寫入資料。
void _MoveFromCoprocessor64(
unsigned __int64 value,
unsigned int coproc,
unsigned int opcode1,
unsigned int crm,
);
參數
coproc
範圍從 0 到 15 的處理器數目。opcode1
範圍從 0 到 15 的處理器特定 opcode。crm
共處理器暫存器編號,範圍從 0 到 15,指定額外的來源或目的端的運算元。
傳回值
無。
備註
coproc、 opcode1和這個內建 crm 參數的值必須是在編譯時期常數運算式。
_MoveFromCoprocessor64 使用 MCRR 指示。參數對應至輸入直接輸入指令字的位元欄位。參數的解譯是副處理器相依。如需詳細資訊,請參閱該處理器的方針。
ARM 支援從其他結構的性質
下表列出在 ARM 平台支援的其他架構的性質。其中一個內建的行為在 ARM 的與其在其他硬體階層架構的行為不同,詳細資料中註明。
函式名稱 |
函式原型 |
---|---|
__assume |
空 __assume (int) |
__code_seg |
空 __code_seg (const char *) |
__debugbreak |
為空 __debugbreak (void) |
__fastfail |
declspec(noreturn) void __fastfail (unsigned int) |
__nop |
空 __nop (void)
注意事項
在 ARM 平台上,否則,如果其中一個目標架構中,實作這個函式產生 NOP 指示;否則,不會變更程式狀態或 CPU 是產生中的其他指示 MOV r8, r8。這在功能上相當於其他硬體階層架構的 __nop 性質。由於對程式或 CPU 的狀態沒有作用的指令可能由目標架構忽略做為最佳化,指示不一定消耗 CPU 週期。因此,請不要使用 __nop 本質操作程式碼順序的執行階段,除非您確定有關 CPU 如何將行為。相反地,您可以使用 __nop 本質對齊下指示特定 32 位元邊界位址。
|
__yield |
空 __yield (void)
注意事項
在 ARM 平台上,這個函式產生 yield 指示,表示執行緒可以從執行變更為範例暫停的工作, SpinLock 沒有不良影響程式的。這使 CPU 執行其他工作。會浪費執行週期。
|
_AddressOfReturnAddress |
void * _AddressOfReturnAddress (void) |
_BitScanForward |
unsigned char _BitScanForward (unsigned long * _Index,不帶正負號的長 _Mask) |
_BitScanReverse |
unsigned char _BitScanReverse (unsigned long * _Index,不帶正負號的長 _Mask) |
_bittest |
_bittest unsigned char (長常數*, long) |
_bittestandcomplement |
unsigned char _bittestandcomplement (long *, long) |
_bittestandreset |
unsigned char _bittestandreset (long *, long) |
_bittestandset |
unsigned char _bittestandset (long *, long) |
_byteswap_uint64 |
unsigned __int64 __cdecl _byteswap_uint64 (unsigned __int64) |
_byteswap_ulong |
不帶正負號的長 __cdecl _byteswap_ulong (Unsigned Long) |
_byteswap_ushort |
不帶正負號的短 __cdecl _byteswap_ushort (不帶正負號的短整數) |
_disable |
_disable 空的 __cdecl (void)
注意事項
在 ARM 平台上,這個函式產生 CPSID 指示;它只可當做性質。
|
_enable |
_enable 空的 __cdecl (void)
注意事項
在 ARM 平台上,這個函式產生 CPSIE 指示;它只可當做性質。
|
_lrotl |
不帶正負號的長 __cdecl _lrotl (Unsigned Long, int) |
_lrotr |
不帶正負號的長 __cdecl _lrotr (Unsigned Long, int) |
_ReadBarrier |
空 _ReadBarrier (void) |
_ReadWriteBarrier |
空 _ReadWriteBarrier (void) |
_ReturnAddress |
void * _ReturnAddress (void) |
_rotl |
unsigned int __cdecl _rotl (不帶正負號的整數 _Value _Shift, int) |
_rotl16 |
不帶正負號的短 _rotl16 (不帶正負號的短 _Value, unsigned char _Shift) |
_rotl64 |
unsigned __int64 __cdecl _rotl64 (unsigned __int64 _Value _Shift, int) |
_rotl8 |
unsigned char _rotl8 (unsigned char _Value, unsigned char _Shift) |
_rotr |
unsigned int __cdecl _rotr (不帶正負號的整數 _Value _Shift, int) |
_rotr16 |
不帶正負號的短 _rotr16 (不帶正負號的短 _Value, unsigned char _Shift) |
_rotr64 |
unsigned __int64 __cdecl _rotr64 (unsigned __int64 _Value _Shift, int) |
_rotr8 |
unsigned char _rotr8 (unsigned char _Value, unsigned char _Shift) |
_setjmpex |
int __cdecl _setjmpex (jmp_buf) |
_WriteBarrier |
空 _WriteBarrier (void) |
[氖]
連鎖的性質
連鎖的本質是用來執行原子讀取修改寫入作業的一組內建。有些對所有平台都通用。它們分別在此列出,因為有大量它們,不過,,因為它們的定義主要是多餘的,通常會將考慮它們比較容易的。其名稱可用來取得正確的行為。
下表摘要說明非 bittest 連鎖的本質的 ARM 支援。每個儲存格在資料表中對應於透過附加在資料行中最左邊的儲存格和型別名稱的作業名稱取得資料列最上方的儲存格之 _Interlocked的名稱。例如,在 Xor 行和 8 資料行交集處的儲存格對應於 _InterlockedXor8 和完全支援。大部分支援的函式提供這些選擇性後置字元: _acq、 _rel和 _nf。_acq 後置字元表示語言定義「的保護」和 _rel 尾碼指示語意「的版本」。這些後置字元 MSDN 的 IPF 文件記錄。_nf 或沒有柵欄」後置字元是唯一飛出視窗的和會在下一節。
8 |
16 |
32 |
64 |
P |
|
---|---|---|---|---|---|
Add |
None |
None |
完全 |
完全 |
None |
And |
完全 |
完全 |
完全 |
完全 |
None |
比較-交換 |
完全 |
完全 |
完全 |
完全 |
完全 |
遞減 |
None |
完全 |
完全 |
完全 |
None |
Exchange |
Partial |
Partial |
Partial |
Partial |
Partial |
ExchangeAdd |
完全 |
完全 |
完全 |
完全 |
None |
遞增 |
None |
完全 |
完全 |
完全 |
None |
Or |
完全 |
完全 |
完全 |
完全 |
None |
Xor |
完全 |
完全 |
完全 |
完全 |
None |
Key:
全:支援簡單地, _acq、 _rel和 _nf 表單。
部分:支援簡單地, _acq和 _nf 表單。
無:不支援
_nf (沒有柵欄) 尾碼
_nf 或沒有柵欄」後置字元表示作業不會以任何一種記憶體屏障。這是與其他三個表單要 (簡單, _acq和 _rel),所有做為阻礙。對 _nf 表單的一個可能的用途是維護值未使用多個執行緒同時更新,但的統計資料計數器,當多個執行緒執行時。
連鎖的本質清單
函式名稱 |
函式原型 |
---|---|
_InterlockedAdd |
長 _InterlockedAdd (的 _volatile *, long) |
_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 |
長 _InterlockedAdd_acq (long Volatile *, long) |
_InterlockedAdd_nf |
長 _InterlockedAdd_nf (long Volatile *, long) |
_InterlockedAdd_rel |
長 _InterlockedAdd_rel (long Volatile *, long) |
_InterlockedAnd |
長 _InterlockedAnd (long Volatile *, long) |
_InterlockedAnd16 |
簡短 _InterlockedAnd16 (簡短 Volatile *,短) |
_InterlockedAnd16_acq |
簡短 _InterlockedAnd16_acq (簡短 Volatile *,短) |
_InterlockedAnd16_nf |
簡短 _InterlockedAnd16_nf (簡短 Volatile *,短) |
_InterlockedAnd16_rel |
簡短 _InterlockedAnd16_rel (簡短 Volatile *,短) |
_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 |
_InterlockedAnd8 char (char Volatile *,字元) |
_InterlockedAnd8_acq |
_InterlockedAnd8_acq char (char Volatile *,字元) |
_InterlockedAnd8_nf |
_InterlockedAnd8_nf char (char Volatile *,字元) |
_InterlockedAnd8_rel |
_InterlockedAnd8_rel char (char Volatile *,字元) |
_InterlockedAnd_acq |
長 _InterlockedAnd_acq (long Volatile *, long) |
_InterlockedAnd_nf |
長 _InterlockedAnd_nf (long Volatile *, long) |
_InterlockedAnd_rel |
長 _InterlockedAnd_rel (long Volatile *, long) |
_InterlockedCompareExchange |
的長度為 _InterlockedCompareExchange (long Volatile *, long, long) |
_InterlockedCompareExchange16 |
簡短 _InterlockedCompareExchange16 (簡短 Volatile *,短,短) |
_InterlockedCompareExchange16_acq |
簡短 _InterlockedCompareExchange16_acq (簡短 Volatile *,短,短) |
_InterlockedCompareExchange16_nf |
簡短 _InterlockedCompareExchange16_nf (簡短 Volatile *,短,短) |
_InterlockedCompareExchange16_rel |
簡短 _InterlockedCompareExchange16_rel (簡短 Volatile *,短,短) |
_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 |
_InterlockedCompareExchange8 char (char Volatile *,字元,字元) |
_InterlockedCompareExchange8_acq |
_InterlockedCompareExchange8_acq char (char Volatile *,字元,字元) |
_InterlockedCompareExchange8_nf |
_InterlockedCompareExchange8_nf char (char Volatile *,字元,字元) |
_InterlockedCompareExchange8_rel |
_InterlockedCompareExchange8_rel char (char Volatile *,字元,字元) |
_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 |
長 _InterlockedCompareExchange_acq (long Volatile *, long, long) |
_InterlockedCompareExchange_nf |
長 _InterlockedCompareExchange_nf (long Volatile *, long, long) |
_InterlockedCompareExchange_rel |
長 _InterlockedCompareExchange_rel (long Volatile *, long, long) |
_InterlockedDecrement |
的長度為 _InterlockedDecrement (long Volatile *) |
_InterlockedDecrement16 |
簡短 _InterlockedDecrement16 (簡短 Volatile *) |
_InterlockedDecrement16_acq |
簡短 _InterlockedDecrement16_acq (簡短 Volatile *) |
_InterlockedDecrement16_nf |
簡短 _InterlockedDecrement16_nf (簡短 Volatile *) |
_InterlockedDecrement16_rel |
簡短 _InterlockedDecrement16_rel (簡短 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 |
長 _InterlockedDecrement_acq (long Volatile *) |
_InterlockedDecrement_nf |
長 _InterlockedDecrement_nf (long Volatile *) |
_InterlockedDecrement_rel |
長 _InterlockedDecrement_rel (long Volatile *) |
_InterlockedExchange |
的長度為 _InterlockedExchange (long Volatile * _Target, long) |
_InterlockedExchange16 |
簡短 _InterlockedExchange16 (簡短 Volatile * _Target, short) |
_InterlockedExchange16_acq |
簡短 _InterlockedExchange16_acq (簡短 Volatile * _Target, short) |
_InterlockedExchange16_nf |
簡短 _InterlockedExchange16_nf (簡短 Volatile * _Target, short) |
_InterlockedExchange64 |
__int64 _InterlockedExchange64 (__int64 Volatile * _Target, __int64) |
_InterlockedExchange64_acq |
__int64 _InterlockedExchange64_acq (__int64 Volatile * _Target, __int64) |
_InterlockedExchange64_nf |
__int64 _InterlockedExchange64_nf (__int64 Volatile * _Target, __int64) |
_InterlockedExchange8 |
_InterlockedExchange8 char (char Volatile * _Target,字元) |
_InterlockedExchange8_acq |
_InterlockedExchange8_acq char (char Volatile * _Target,字元) |
_InterlockedExchange8_nf |
_InterlockedExchange8_nf char (char Volatile * _Target,字元) |
_InterlockedExchangeAdd |
的長度為 _InterlockedExchangeAdd (long Volatile *, long) |
_InterlockedExchangeAdd16 |
簡短 _InterlockedExchangeAdd16 (簡短 Volatile *,短) |
_InterlockedExchangeAdd16_acq |
簡短 _InterlockedExchangeAdd16_acq (簡短 Volatile *,短) |
_InterlockedExchangeAdd16_nf |
簡短 _InterlockedExchangeAdd16_nf (簡短 Volatile *,短) |
_InterlockedExchangeAdd16_rel |
簡短 _InterlockedExchangeAdd16_rel (簡短 Volatile *,短) |
_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 |
_InterlockedExchangeAdd8 char (char Volatile *,字元) |
_InterlockedExchangeAdd8_acq |
_InterlockedExchangeAdd8_acq char (char Volatile *,字元) |
_InterlockedExchangeAdd8_nf |
_InterlockedExchangeAdd8_nf char (char Volatile *,字元) |
_InterlockedExchangeAdd8_rel |
_InterlockedExchangeAdd8_rel char (char Volatile *,字元) |
_InterlockedExchangeAdd_acq |
長 _InterlockedExchangeAdd_acq (long Volatile *, long) |
_InterlockedExchangeAdd_nf |
長 _InterlockedExchangeAdd_nf (long Volatile *, long) |
_InterlockedExchangeAdd_rel |
長 _InterlockedExchangeAdd_rel (long Volatile *, long) |
_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 |
長 _InterlockedExchange_acq (long Volatile * _Target, long) |
_InterlockedExchange_nf |
長 _InterlockedExchange_nf (long Volatile * _Target, long) |
_InterlockedIncrement |
的長度為 _InterlockedIncrement (long Volatile *) |
_InterlockedIncrement16 |
簡短 _InterlockedIncrement16 (簡短 Volatile *) |
_InterlockedIncrement16_acq |
簡短 _InterlockedIncrement16_acq (簡短 Volatile *) |
_InterlockedIncrement16_nf |
簡短 _InterlockedIncrement16_nf (簡短 Volatile *) |
_InterlockedIncrement16_rel |
簡短 _InterlockedIncrement16_rel (簡短 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 |
長 _InterlockedIncrement_acq (long Volatile *) |
_InterlockedIncrement_nf |
長 _InterlockedIncrement_nf (long Volatile *) |
_InterlockedIncrement_rel |
長 _InterlockedIncrement_rel (long Volatile *) |
_InterlockedOr |
長 _InterlockedOr (long Volatile *, long) |
_InterlockedOr16 |
簡短 _InterlockedOr16 (簡短 Volatile *,短) |
_InterlockedOr16_acq |
簡短 _InterlockedOr16_acq (簡短 Volatile *,短) |
_InterlockedOr16_nf |
簡短 _InterlockedOr16_nf (簡短 Volatile *,短) |
_InterlockedOr16_rel |
簡短 _InterlockedOr16_rel (簡短 Volatile *,短) |
_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 |
_InterlockedOr8 char (char Volatile *,字元) |
_InterlockedOr8_acq |
_InterlockedOr8_acq char (char Volatile *,字元) |
_InterlockedOr8_nf |
_InterlockedOr8_nf char (char Volatile *,字元) |
_InterlockedOr8_rel |
_InterlockedOr8_rel char (char Volatile *,字元) |
_InterlockedOr_acq |
長 _InterlockedOr_acq (long Volatile *, long) |
_InterlockedOr_nf |
長 _InterlockedOr_nf (long Volatile *, long) |
_InterlockedOr_rel |
長 _InterlockedOr_rel (long Volatile *, long) |
_InterlockedXor |
長 _InterlockedXor (long Volatile *, long) |
_InterlockedXor16 |
簡短 _InterlockedXor16 (簡短 Volatile *,短) |
_InterlockedXor16_acq |
簡短 _InterlockedXor16_acq (簡短 Volatile *,短) |
_InterlockedXor16_nf |
簡短 _InterlockedXor16_nf (簡短 Volatile *,短) |
_InterlockedXor16_rel |
簡短 _InterlockedXor16_rel (簡短 Volatile *,短) |
_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 |
_InterlockedXor8 char (char Volatile *,字元) |
_InterlockedXor8_acq |
_InterlockedXor8_acq char (char Volatile *,字元) |
_InterlockedXor8_nf |
_InterlockedXor8_nf char (char Volatile *,字元) |
_InterlockedXor8_rel |
_InterlockedXor8_rel char (char Volatile *,字元) |
_InterlockedXor_acq |
長 _InterlockedXor_acq (long Volatile *, long) |
_InterlockedXor_nf |
長 _InterlockedXor_nf (long Volatile *, long) |
_InterlockedXor_rel |
長 _InterlockedXor_rel (long Volatile *, long) |
[氖]
_interlockedbittest 本質
純連鎖 bittest 本質對所有平台都通用。ARM 加入 _acq、 _rel和 _nf 變數,修改作業的阻礙語意,如 _nf (沒有柵欄) 尾碼 所述本文。
函式名稱 |
函式原型 |
---|---|
_interlockedbittestandreset |
unsigned char _interlockedbittestandreset (long Volatile *, long) |
_interlockedbittestandreset_acq |
unsigned char _interlockedbittestandreset_acq (long Volatile *, long) |
_interlockedbittestandreset_nf |
unsigned char _interlockedbittestandreset_nf (long Volatile *, long) |
_interlockedbittestandreset_rel |
unsigned char _interlockedbittestandreset_rel (long Volatile *, long) |
_interlockedbittestandset |
unsigned char _interlockedbittestandset (long Volatile *, long) |
_interlockedbittestandset_acq |
unsigned char _interlockedbittestandset_acq (long Volatile *, long) |
_interlockedbittestandset_nf |
unsigned char _interlockedbittestandset_nf (long Volatile *, long) |
_interlockedbittestandset_rel |
unsigned char _interlockedbittestandset_rel (long Volatile *, long) |
[氖]