ARM 組み込み
Visual C++ コンパイラは、ARM アーキテクチャで次の組み込みを使用できるようになります。ARM に関する詳細については、ARM の Infocenter Web サイトを ARM アセンブラー ツールのガイド 参照してください。ARM のアーキテクチャのリファレンス マニュアル
ネオン
ARM のネオン ベクターの命令セットの拡張子は、MMX の機能に似たのベクターと SSE 命令セットを提供する単一の命令の x86 および x64 アーキテクチャのプロセッサに共通複数のデータの (SIMD) の機能。
ネオン組み込みはヘッダー ファイル arm_neon.hで、そのままサポートされます。ネオン組み込みの Visual C++ コンパイラでは、ARM の Infocenter Web サイトの コンパイラの toolchain、Version 4.1 のコンパイラの参照を武装します。 " Appendix G に記載されている ARM のコンパイラの動作に似ています。
Visual C++ コンパイラで ARM のコンパイラとの主な相違点は Visual C++ コンパイラが vldX と vstX のベクターの読み込みおよび格納の命令の _ex のバリアントを追加します。_ex のバリアントでポインター引数の配置を指定しますが、いる_ex の非等価とは別の方法で同じです。パラメーターを追加。
ARM 特定に組み込みの一覧表示
[関数名] |
命令 |
関数プロトタイプ |
---|---|---|
_arm_smlal |
SMLAL |
_arm_smlal __int64 (__int64 _RdHiLo、int の_Rn、int の_Rm) |
_arm_umlal |
UMLAL |
_arm_umlal 符号なし__int64 (符号なし__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 の_Rn unsigned int、unsigned int の_Rm) |
_arm_uadd8 |
UADD8 |
unsigned int (_arm_uadd8 の_Rn unsigned int、unsigned int の_Rm) |
_arm_uasx |
UASX |
unsigned int の_arm_uasx (_Rn の unsigned int、unsigned int の_Rm) |
_arm_usax |
USAX |
unsigned int の_arm_usax (_Rn の unsigned int、unsigned int の_Rm) |
_arm_usub16 |
USUB16 |
unsigned int (_arm_usub16 の_Rn unsigned int、unsigned int の_Rm) |
_arm_usub8 |
USUB8 |
unsigned int (_arm_usub8 の_Rn unsigned int、unsigned int の_Rm) |
_arm_uhadd16 |
UHADD16 |
unsigned int (_arm_uhadd16 の_Rn unsigned int、unsigned int の_Rm) |
_arm_uhadd8 |
UHADD8 |
unsigned int (_arm_uhadd8 の_Rn unsigned int、unsigned int の_Rm) |
_arm_uhasx |
UHASX |
unsigned int の_arm_uhasx (_Rn の unsigned int、unsigned int の_Rm) |
_arm_uhsax |
UHSAX |
unsigned int の_arm_uhsax (_Rn の unsigned int、unsigned int の_Rm) |
_arm_uhsub16 |
UHSUB16 |
unsigned int (_arm_uhsub16 の_Rn unsigned int、unsigned int の_Rm) |
_arm_uhsub8 |
UHSUB8 |
unsigned int (_arm_uhsub8 の_Rn unsigned int、unsigned int の_Rm) |
_arm_uqadd16 |
UQADD16 |
unsigned int (_arm_uqadd16 の_Rn unsigned int、unsigned int の_Rm) |
_arm_uqadd8 |
UQADD8 |
unsigned int (_arm_uqadd8 の_Rn unsigned int、unsigned int の_Rm) |
_arm_uqasx |
UQASX |
unsigned int の_arm_uqasx (_Rn の unsigned int、unsigned int の_Rm) |
_arm_uqsax |
UQSAX |
unsigned int の_arm_uqsax (_Rn の unsigned int、unsigned int の_Rm) |
_arm_uqsub16 |
UQSUB16 |
unsigned int (_arm_uqsub16 の_Rn unsigned int、unsigned int の_Rm) |
_arm_uqsub8 |
UQSUB8 |
unsigned int (_arm_uqsub8 の_Rn unsigned int、unsigned int の_Rm) |
_arm_sxtab |
SXTAB |
int の_arm_sxtab (int の_Rn の_Rm、int、unsigned int の_Rotation) |
_arm_sxtab16 |
SXTAB16 |
int _arm_sxtab16 (int の_Rn の_Rm、int、unsigned int の_Rotation) |
_arm_sxtah |
SXTAH |
int の_arm_sxtah (int の_Rn の_Rm、int、unsigned int の_Rotation) |
_arm_uxtab |
UXTAB |
unsigned int の_arm_uxtab (_Rn の unsigned int、unsigned int の_Rm、unsigned int の_Rotation) |
_arm_uxtab16 |
UXTAB16 |
unsigned int (_arm_uxta16b の_Rn unsigned int、unsigned int の_Rm、unsigned int の_Rotation) |
_arm_uxtah |
UXTAH |
unsigned int の_arm_uxtah (_Rn の unsigned int、unsigned int の_Rm、unsigned int の_Rotation) |
_arm_sxtb |
SXTB |
int の_arm_sxtb の_Rn (int、unsigned int の_Rotation) |
_arm_sxtb16 |
SXTB16 |
int _arm_sxtb16 の_Rn (int、unsigned int の_Rotation) |
_arm_sxth |
SXTH |
int の_arm_sxth の_Rn (int、unsigned int の_Rotation) |
_arm_uxtb |
UXTB |
unsigned int の_arm_uxtb (_Rn の unsigned int、unsigned int の_Rotation) |
_arm_uxtb16 |
UXTB16 |
unsigned int (_arm_uxtb16 の_Rn unsigned int、unsigned int の_Rotation) |
_arm_uxth |
UXTH |
unsigned int の_arm_uxth (_Rn の unsigned int、unsigned int の_Rotation) |
_arm_pkhbt |
PKHBT |
int の_arm_pkhbt (int の_Rn の_Rm、int、unsigned int の_Lsl_imm) |
_arm_pkhtb |
PKHTB |
int の_arm_pkhtb (int の_Rn の_Rm、int、unsigned int の_Asr_imm) |
_arm_usad8 |
USAD8 |
unsigned int (_arm_usad8 の_Rn unsigned int、unsigned int の_Rm) |
_arm_usada8 |
USADA8 |
unsigned int (_arm_usada8 の_Rn unsigned int、unsigned int の_Rm、unsigned int の_Ra) |
_arm_ssat |
SSAT |
_arm_ssat (int、unsigned int の_Sat_imm、_int の_Rn、_ARMINTR_SHIFT_T の_Shift_type、unsigned int の_Shift_imm) |
_arm_usat |
USAT |
_arm_usat (int、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、unsigned int (_arm_rev16 の_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 |
_arm_smmlar int (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 |
符号なし__int64 _arm_umull (_Rn の unsigned int、unsigned int の_Rm) |
_arm_umaal |
UMAAL |
_arm_umaal 符号なし__int64 (_RdLo の unsigned int、unsigned int の_RdHi、unsigned int の_Rn、unsigned int の_Rm) |
_arm_bfc |
BFC |
unsigned int の_arm_bfc (_Rd の unsigned int、unsigned int の_Lsb、unsigned int の_Width) |
_arm_bfi |
BFI |
unsigned int の_arm_bfi (_Rd の unsigned int、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 の_Rn (int、unsigned int の_Lsb、unsigned int の_Width) |
_arm_ubfx |
UBFX |
unsigned int の_arm_ubfx (_Rn の unsigned int、unsigned int の_Lsb、unsigned int の_Width) |
_arm_sdiv |
SDIV |
int の_arm_sdiv (int の_Rn、int の_Rm) |
_arm_udiv |
UDIV |
unsigned int の_arm_udiv (_Rn の unsigned int、unsigned int の_Rm) |
__cps |
CPS |
無効の__cps (_Ops の unsigned int、unsigned int の_Flags、unsigned int の_Mode) |
__dmb |
DMB |
無効の__dmb (unsigned int _Type) 命令ストリームにメモリ バリア操作を挿入します。パラメーターは _Type バリアが実装する種類の制限を指定します。 実装できる種類の制約についての詳細に メモリ バリアの制限を参照してください。 |
__dsb |
DSB |
無効の__dsb (unsigned int の_Type) 命令ストリームにメモリ バリア操作を挿入します。パラメーターは _Type バリアが実装する種類の制限を指定します。 実装できる種類の制約についての詳細に メモリ バリアの制限を参照してください。 |
__isb |
ISB |
無効の__isb (unsigned int の_Type) 命令ストリームにメモリ バリア操作を挿入します。パラメーターは _Type バリアが実装する種類の制限を指定します。 実装できる種類の制約についての詳細に メモリ バリアの制限を参照してください。 |
__emit |
無効の__emit (符号なし)、__int32 オペコード コンパイラによって出力される命令ストリームに指定した命令を挿入します。 opcode の値は、コンパイル時に判明している定数式である必要があります。命令語のサイズは 16 の bit で、opcode の最も重要な 16 の bit は無視されます。 コンパイラは、挿入命令が実行される前に opcode の内容を解釈しますができ、CPU またはメモリ不足の状態が保証されます。 コンパイラは、挿入命令が実行された後、CPU とメモリの状態が変更されていないと想定しています。したがって、状態を変更する手順は、コンパイラによって生成される通常のコードの有害な影響が及びます。 したがって、コンパイラ例は、コプロセッサ プロセスに挿入されます。通常状態または declspec(naked)を使用して宣言した関数を呼び出さない CPU の状態に影響する命令のみ使用する emit。 |
|
__hvc |
HVC |
unsigned int の__hvc (unsigned int、…) |
__iso_volatile_load16 |
__int16 __iso_volatile_load16 (*) __int16 const-volatile 詳細については、「__iso_volatile_load/store の instrinsics」を参照してください。 |
|
__iso_volatile_load32 |
const-volatile __int32 __int32 __iso_volatile_load32 (*) 詳細については、「__iso_volatile_load/store の instrinsics」を参照してください。 |
|
__iso_volatile_load64 |
(__int64 __iso_volatile_load64 const-volatile __int64 *) 詳細については、「__iso_volatile_load/store の instrinsics」を参照してください。 |
|
__iso_volatile_load8 |
__int8 __iso_volatile_load8 (*) __int8 const-volatile 詳細については、「__iso_volatile_load/store の instrinsics」を参照してください。 |
|
__iso_volatile_store16 |
無効__iso_volatile_store16 (*) __int16、揮発性__int16 詳細については、「__iso_volatile_load/store の instrinsics」を参照してください。 |
|
__iso_volatile_store32 |
無効__iso_volatile_store32 揮発性__int32 (*)、__int32 詳細については、「__iso_volatile_load/store の instrinsics」を参照してください。 |
|
__iso_volatile_store64 |
無効__iso_volatile_store64 (__int64 揮発性*、__int64) 詳細については、「__iso_volatile_load/store の instrinsics」を参照してください。 |
|
__iso_volatile_store8 |
無効__iso_volatile_store8 (*) __int8、揮発性__int8 詳細については、「__iso_volatile_load/store の instrinsics」を参照してください。 |
|
__ldrexd |
LDREXD |
(__int64 __ldrexd const-volatile __int64 *) |
__prefetch |
PLD |
無効な__cdecl の__prefetch const (無効) * 指定したアドレスにあるまたはその近くのメモリをすばやくアクセスする可能性のあるシステムに PLD のメモリのヒントを示します。あるシステムはそのメモリ アクセス パターンが実行時のパフォーマンスが向上するために最適化する方法もあります。ただし、C++ 言語の観点から、関数に明らかな影響を与えず、何もしない場合があります。 |
__rdpmccntr64 |
符号なし__int64 __rdpmccntr64 (無効) |
|
__sev |
SEV |
無効の__sev (無効) |
__static_assert |
無効の__static_assert (int の const char *) |
|
__swi |
SVC |
unsigned int の__swi (unsigned int、…) |
__trap |
BKPT |
int の__trap (int、…) |
__wfe |
WFE |
無効の__wfe (無効) |
__wfi |
WFI |
無効の__wfi (無効) |
_AddSatInt |
QADD |
int の_AddSatInt (int、int) |
_CopyDoubleFromInt64 |
二重_CopyDoubleFromInt64 (__int64) |
|
_CopyFloatFromInt32 |
float _CopyFloatFromInt32(__int32) |
|
_CopyInt32FromFloat |
__int32 _CopyInt32FromFloat(float) |
|
_CopyInt64FromDouble |
__int64 _CopyInt64FromDouble (Double) |
|
_CountLeadingOnes |
unsigned int の_CountLeadingOnes (符号なし長) |
|
_CountLeadingOnes64 |
unsigned int _CountLeadingOnes64 (符号なし__int64) |
|
_CountLeadingSigns |
unsigned int の_CountLeadingSigns (long) |
|
_CountLeadingSigns64 |
unsigned int _CountLeadingSigns64 (__int64) |
|
_CountLeadingZeros |
unsigned int の_CountLeadingZeros (符号なし長) |
|
_CountLeadingZeros64 |
unsigned int _CountLeadingZeros64 (符号なし__int64) |
|
_CountOneBits |
unsigned int の_CountOneBits (符号なし長) |
|
_CountOneBits64 |
unsigned int _CountOneBits64 (符号なし__int64) |
|
_DAddSatInt |
QDADD |
int の_DAddSatInt (int、int) |
_DSubSatInt |
QDSUB |
int の_DSubSatInt (int、int) |
_isunordered |
_isunordered int (Single、Double) |
|
_isunorderedf |
int の_isunorderedf (浮動、浮動) |
|
_MoveFromCoprocessor |
MRC |
unsigned int の_MoveFromCoprocessor (unsigned int、unsigned int、unsigned int、unsigned int、unsigned int) コプロセッサ命令のデータ転送を使用して、ARM コプロセッサからデータを読み込みます。詳細については、「_MoveFromCoprocessor、_MoveFromCoprocessor2」を参照してください。 |
_MoveFromCoprocessor2 |
MRC2 |
unsigned int (_MoveFromCoprocessor2 unsigned int、unsigned int、unsigned int、unsigned int、unsigned int) コプロセッサ命令のデータ転送を使用して、ARM コプロセッサからデータを読み込みます。詳細については、「_MoveFromCoprocessor、_MoveFromCoprocessor2」を参照してください。 |
_MoveFromCoprocessor64 |
MRRC |
符号なし__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 (符号なし__int64、unsigned int、unsigned int、unsigned int) コプロセッサ命令のデータ転送を使用して、ARM コプロセッサからデータを読み込みます。詳細については、「_MoveToCoprocessor64」を参照してください。 |
_MulHigh |
長い_MulHigh (long、long) |
|
_MulUnsignedHigh |
符号なし長_MulUnsignedHigh (符号なし長、unsigned long) |
|
_ReadBankedReg |
夫人 |
int の_ReadBankedReg (int の_Reg) |
_ReadStatusReg |
夫人 |
int の_ReadStatusReg (int) |
_SubSatInt |
QSUB |
int の_SubSatInt (int、int) |
_WriteBankedReg |
MSR |
無効の_WriteBankedReg (int の_Value、int の_Reg) |
_WriteStatusReg |
MSR |
無効の_WriteStatusReg (int、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; 他のすべての値は、アーキテクチャによって予約されています。
__iso_volatile_load/store の instrinsics
これらの組み込み関数が明示的にコンパイラの最適化が適用されないストアと読み込みを実行します。
__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: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 の範囲のコプロセッサ特定のオペコードcrn
コプロセッサのレジスタ番号、命令に 1 番目のオペランドを指定する 0 ~ 15 の範囲の。crm
コプロセッサのレジスタ番号、追加のソースまたはターゲットのオペランドを指定する 0 ~ 15 の範囲の。opcode2
0 ~ 7.の追加、コプロセッサ特定のオペコード。
戻り値
コプロセッサから読み取った値。
解説
この組み込みの 5 つすべてのパラメーターの値は、コンパイル時に判明している定数式である必要があります。
_MoveFromCoprocessor は MRC の命令を使用して; _MoveFromCoprocessor2 を使用 MRC2。パラメーターは、命令語に直接エンコードされた bitfields に対応します。パラメーターの解釈はコプロセッサ依存します。詳細については、該当しないコプロセッサについては、手動を参照してください。
_MoveFromCoprocessor64
コプロセッサ命令のデータ転送を使用して、ARM コプロセッサからデータを読み込みます。
unsigned __int64 _MoveFromCoprocessor64(
unsigned int coproc,
unsigned int opcode1,
unsigned int crm,
);
パラメーター
coproc
0 ~ 15 の範囲の数。コプロセッサopcode1
0 ~ 15 の範囲のコプロセッサ特定のオペコード。crm
コプロセッサのレジスタ番号、追加のソースまたはターゲットのオペランドを指定する 0 ~ 15 の範囲の。
値を返します。
コプロセッサから読み取った値。
解説
この組み込みの 3 つすべてのパラメーターの値は、コンパイル時に判明している定数式である必要があります。
_MoveFromCoprocessor64 は MRRC 命令を使用します。パラメーターは、命令語に直接エンコードされた bitfields に対応します。パラメーターの解釈はコプロセッサ依存します。詳細については、該当しないコプロセッサについては、手動を参照してください。
_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.コプロセッサ特定のオペコード。crn
コプロセッサのレジスタ番号、命令に 1 番目のオペランドを指定する 0 ~ 15 の範囲の。crm
コプロセッサのレジスタ番号、追加のソースまたはターゲットのオペランドを指定する 0 ~ 15 の範囲の。opcode2
0 ~ 7.の追加、コプロセッサ特定のオペコード。
戻り値
なし。
解説
この組み込みの coproc、opcode1、crn、crmと opcode2 のパラメーターの値は、コンパイル時に判明している定数式である必要があります。
_MoveToCoprocessor は MCR の命令を使用して; _MoveToCoprocessor2 を使用 MCR2。パラメーターは、命令語に直接エンコードされた bitfields に対応します。パラメーターの解釈はコプロセッサ依存します。詳細については、該当しないコプロセッサについては、手動を参照してください。
_MoveToCoprocessor64
これらの組み込み関数は、ARM コプロセッサのデータ転送にコプロセッサ命令を使用してデータを書き込みます。
void _MoveFromCoprocessor64(
unsigned __int64 value,
unsigned int coproc,
unsigned int opcode1,
unsigned int crm,
);
パラメーター
coproc
0 ~ 15 の範囲の数。コプロセッサopcode1
0 ~ 15 の範囲のコプロセッサ特定のオペコード。crm
コプロセッサのレジスタ番号、追加のソースまたはターゲットのオペランドを指定する 0 ~ 15 の範囲の。
戻り値
なし。
解説
この組み込みの coproc、opcode1と crm のパラメーターの値は、コンパイル時に判明している定数式である必要があります。
_MoveFromCoprocessor64 は MCRR 命令を使用します。パラメーターは、命令語に直接エンコードされた bitfields に対応します。パラメーターの解釈はコプロセッサ依存します。詳細については、該当しないコプロセッサについては、手動を参照してください。
他のアーキテクチャからの組み込みの ARM のサポート
次の表は、ARM のプラットフォームでサポートされている他のアーキテクチャからの組み込みを示します。ARM の組み込みの動作が他のハードウェア アーキテクチャの動作と異なる場合は、詳細が表示されます。
[関数名] |
関数プロトタイプ |
---|---|
__assume |
無効な__assume (int) |
__code_seg |
無効の__code_seg (const char *) |
__debugbreak |
無効な__cdecl の__debugbreak (無効) |
__fastfail |
__declspec (noreturn) の無効__fastfail (unsigned int) |
__nop |
無効の__nop (無効)
メモ
ARM のプラットフォームでは、この関数は 1 つがターゲット アーキテクチャで実行されている場合 NOP 命令を生成して、; それ以外の場合、プログラムの状態を変更するか、CPU が生成例では、いくつかの代替命令、MOV r8, r8。これにより、他のハードウェア アーキテクチャの__nop の組み込みと機能的には同じです。プログラムや CPU の状態には影響ありません。命令が最適化としてターゲット アーキテクチャで無視される可能性があるため、命令は、CPU サイクルを消費しません。したがって、CPU によるすることが確実では、コード シーケンスの実行時間を処理するために__nop の組み込みを使用しないでください。代わりに、特定の 32 ビット境界のアドレスに次の命令の整列に__nop の組み込みを使用できます。
|
__yield |
無効の__yield (無効)
メモ
ARM のプラットフォームでは、この関数はスレッドは実行例のから一時的に中断できるタスクを実行していることを示す譲渡された命令によって、プログラムに影響を与える可能性 SpinLock なしで生成されます。これは、無駄になる実行期間中に他のタスクの実行で CPU ができます。
|
_AddressOfReturnAddress |
無効_AddressOfReturnAddress * (無効) |
_BitScanForward |
char の符号なし_BitScanForward (符号なし長* _Index、符号なし長_Mask) |
_BitScanReverse |
char の符号なし_BitScanReverse (符号なし長* _Index、符号なし長_Mask) |
_bittest |
_bittest unsigned char const (long *、長い) |
_bittestandcomplement |
char の符号なし_bittestandcomplement (long *、長い) |
_bittestandreset |
char の符号なし_bittestandreset (long *、長い) |
_bittestandset |
char の符号なし_bittestandset (long *、長い) |
_byteswap_uint64 |
符号なし__int64 __cdecl _byteswap_uint64 (符号なし__int64) |
_byteswap_ulong |
符号なし長__cdecl の_byteswap_ulong (符号なし長) |
_byteswap_ushort |
unsigned short __cdecl の_byteswap_ushort (unsigned short) |
_disable |
__cdecl の_disable 無効 (無効)
メモ
ARM のプラットフォームでは、この関数は CPSID 命令を生成して、; これは、組み込みとしてのみ使用できます。
|
_enable |
__cdecl の_enable 無効 (無効)
メモ
ARM のプラットフォームでは、この関数は CPSIE 命令を生成して、; これは、組み込みとしてのみ使用できます。
|
_lrotl |
符号なし長__cdecl の_lrotl (符号なし長、int) |
_lrotr |
符号なし長__cdecl の_lrotr (符号なし長、int) |
_ReadBarrier |
無効の_ReadBarrier (無効) |
_ReadWriteBarrier |
無効の_ReadWriteBarrier (無効) |
_ReturnAddress |
無効_ReturnAddress * (無効) |
_rotl |
unsigned int の__cdecl の_rotl (unsigned int の_Value、int の_Shift) |
_rotl16 |
unsigned short _rotl16 (符号なし短_Value、char 符号なしの_Shift) |
_rotl64 |
符号なし__int64 __cdecl _rotl64 (符号なし__int64 _Value、int の_Shift) |
_rotl8 |
unsigned char _rotl8 (char の符号なし_Value、char 符号なしの_Shift) |
_rotr |
unsigned int の__cdecl の_rotr (unsigned int の_Value、int の_Shift) |
_rotr16 |
unsigned short _rotr16 (符号なし短_Value、char 符号なしの_Shift) |
_rotr64 |
符号なし__int64 __cdecl _rotr64 (符号なし__int64 _Value、int の_Shift) |
_rotr8 |
unsigned char _rotr8 (char の符号なし_Value、char 符号なしの_Shift) |
_setjmpex |
int の__cdecl の_setjmpex (jmp_buf) |
_WriteBarrier |
無効の_WriteBarrier (無効) |
[ネオン]
インタロックされた組み込み
インタロックされた組み込みは分割不可能な読み込み変更書き込み操作の実行に使用される一連の組み込みです。その一部はすべてのプラットフォームで共通です。これらは、について漠然と考えることが簡単ですが、それらが複数あるため、ほとんどの定義が重複しているため、次に別に一覧表示されます。名前が、実際の動作を取得するために使用できます。
次の表に、bittest インタロックされた組み込みの ARM のサポートの概要を示します。テーブル内のセルは、行の左端のセルの操作の名前と _Interlockedに列の先頭のセル型の名前を追加して派生した名前に対応します。たとえば、Xor の行と [8] の列の間のセルは _InterlockedXor8 に対応し、完全にサポートされます。サポートされている関数のほとんどは、これらのオプションのサフィックスが用意されています: _acq、_relと _nf。_acq のサフィックスは _rel のサフィックスが" ことを意味を "Release "Get"、つまりを示すことを示します。これらのサフィックスは、MSDN の IPF ドキュメントに記載されています。_nf または "フェンス" サフィックスは武装するには、一意で、次のセクションで説明します。
8 |
16 |
32 |
64 |
P |
|
---|---|---|---|---|---|
加算 |
なし |
なし |
Full |
Full |
なし |
AND |
Full |
Full |
Full |
Full |
なし |
CompareExchange |
Full |
Full |
Full |
Full |
Full |
Decrement |
なし |
Full |
Full |
Full |
なし |
Exchange |
Partial |
Partial |
Partial |
Partial |
Partial |
ExchangeAdd |
Full |
Full |
Full |
Full |
なし |
インクリメント |
なし |
Full |
Full |
Full |
なし |
OR |
Full |
Full |
Full |
Full |
なし |
Xor |
Full |
Full |
Full |
Full |
なし |
container:
完全には: サポート明確に、_acq、_relと _nf のフォーム。
:部分明確に _acqサポート、および _nf のフォーム。
None": サポートされていない
_nf (フェンスのサフィックスなし)
操作では、すべての種類としてのメモリ バリアしないことを _nf または "フェンス" サフィックスは示されません。これは、すべての一部としてのバリアする他の 3 とおりの形式とは対照的 (Express、_acq_rel) です。_nf の形式の 1 とおりの使用は複数のスレッドが実行している間、同時に更新されますが、複数のスレッドによって値が他では使用されないカウンターの統計情報を保持することです。
インタロックされた組み込みのリスト
[関数名] |
関数プロトタイプ |
---|---|
_InterlockedAdd |
長い_InterlockedAdd (long _volatile *、長い) |
_InterlockedAdd64 |
__int64 _InterlockedAdd64 (__int64 揮発性*、__int64) |
_InterlockedAdd64_acq |
__int64 _InterlockedAdd64_acq (__int64 揮発性*、__int64) |
_InterlockedAdd64_nf |
__int64 _InterlockedAdd64_nf (__int64 揮発性*、__int64) |
_InterlockedAdd64_rel |
__int64 _InterlockedAdd64_rel (__int64 揮発性*、__int64) |
_InterlockedAdd_acq |
長い_InterlockedAdd_acq (long 揮発性*、長い) |
_InterlockedAdd_nf |
長い_InterlockedAdd_nf (long 揮発性*、長い) |
_InterlockedAdd_rel |
長い_InterlockedAdd_rel (long 揮発性*、長い) |
_InterlockedAnd |
長い_InterlockedAnd (long 揮発性*、長い) |
_InterlockedAnd16 |
短い_InterlockedAnd16 (短い揮発性*、短い) |
_InterlockedAnd16_acq |
短い_InterlockedAnd16_acq (短い揮発性*、短い) |
_InterlockedAnd16_nf |
短い_InterlockedAnd16_nf (短い揮発性*、短い) |
_InterlockedAnd16_rel |
短い_InterlockedAnd16_rel (短い揮発性*、短い) |
_InterlockedAnd64 |
__int64 _InterlockedAnd64 (__int64 揮発性*、__int64) |
_InterlockedAnd64_acq |
__int64 _InterlockedAnd64_acq (__int64 揮発性*、__int64) |
_InterlockedAnd64_nf |
__int64 _InterlockedAnd64_nf (__int64 揮発性*、__int64) |
_InterlockedAnd64_rel |
__int64 _InterlockedAnd64_rel (__int64 揮発性*、__int64) |
_InterlockedAnd8 |
char (_InterlockedAnd8 文字の揮発性、char *) |
_InterlockedAnd8_acq |
char (_InterlockedAnd8_acq 文字の揮発性、char *) |
_InterlockedAnd8_nf |
char (_InterlockedAnd8_nf 文字の揮発性、char *) |
_InterlockedAnd8_rel |
char (_InterlockedAnd8_rel 文字の揮発性、char *) |
_InterlockedAnd_acq |
長い_InterlockedAnd_acq (long 揮発性*、長い) |
_InterlockedAnd_nf |
長い_InterlockedAnd_nf (long 揮発性*、長い) |
_InterlockedAnd_rel |
長い_InterlockedAnd_rel (long 揮発性*、長い) |
_InterlockedCompareExchange |
長い__cdecl の_InterlockedCompareExchange (long 揮発性*、長く、長い) |
_InterlockedCompareExchange16 |
短い_InterlockedCompareExchange16 (短い揮発性*、短く、短い) |
_InterlockedCompareExchange16_acq |
短い_InterlockedCompareExchange16_acq (短い揮発性*、短く、短い) |
_InterlockedCompareExchange16_nf |
短い_InterlockedCompareExchange16_nf (短い揮発性*、短く、短い) |
_InterlockedCompareExchange16_rel |
短い_InterlockedCompareExchange16_rel (短い揮発性*、短く、短い) |
_InterlockedCompareExchange64 |
__int64 _InterlockedCompareExchange64 (__int64 揮発性*、__int64、__int64) |
_InterlockedCompareExchange64_acq |
__int64 _InterlockedCompareExchange64_acq (__int64 揮発性*、__int64、__int64) |
_InterlockedCompareExchange64_nf |
__int64 _InterlockedCompareExchange64_nf (__int64 揮発性*、__int64、__int64) |
_InterlockedCompareExchange64_rel |
__int64 _InterlockedCompareExchange64_rel (__int64 揮発性*、__int64、__int64) |
_InterlockedCompareExchange8 |
char (_InterlockedCompareExchange8 文字の揮発性、char、char *) |
_InterlockedCompareExchange8_acq |
char (_InterlockedCompareExchange8_acq 文字の揮発性、char、char *) |
_InterlockedCompareExchange8_nf |
char (_InterlockedCompareExchange8_nf 文字の揮発性、char、char *) |
_InterlockedCompareExchange8_rel |
char (_InterlockedCompareExchange8_rel 文字の揮発性、char、char *) |
_InterlockedCompareExchangePointer |
無効_InterlockedCompareExchangePointer * (void * *揮発性、無効*、無効) * |
_InterlockedCompareExchangePointer_acq |
無効_InterlockedCompareExchangePointer_acq * (void * *揮発性、無効*、無効) * |
_InterlockedCompareExchangePointer_nf |
無効_InterlockedCompareExchangePointer_nf * (void * *揮発性、無効*、無効) * |
_InterlockedCompareExchangePointer_rel |
無効_InterlockedCompareExchangePointer_rel * (void * *揮発性、無効*、無効) * |
_InterlockedCompareExchange_acq |
長い_InterlockedCompareExchange_acq (long 揮発性*、長く、長い) |
_InterlockedCompareExchange_nf |
長い_InterlockedCompareExchange_nf (long 揮発性*、長く、長い) |
_InterlockedCompareExchange_rel |
長い_InterlockedCompareExchange_rel (long 揮発性*、長く、長い) |
_InterlockedDecrement |
長い__cdecl の_InterlockedDecrement (long 揮発性*) |
_InterlockedDecrement16 |
短い_InterlockedDecrement16 揮発性短い (*) |
_InterlockedDecrement16_acq |
短い_InterlockedDecrement16_acq 揮発性短い (*) |
_InterlockedDecrement16_nf |
短い_InterlockedDecrement16_nf 揮発性短い (*) |
_InterlockedDecrement16_rel |
短い_InterlockedDecrement16_rel 揮発性短い (*) |
_InterlockedDecrement64 |
__int64 _InterlockedDecrement64 (__int64 揮発性*) |
_InterlockedDecrement64_acq |
__int64 _InterlockedDecrement64_acq (__int64 揮発性*) |
_InterlockedDecrement64_nf |
__int64 _InterlockedDecrement64_nf (__int64 揮発性*) |
_InterlockedDecrement64_rel |
__int64 _InterlockedDecrement64_rel (__int64 揮発性*) |
_InterlockedDecrement_acq |
長い_InterlockedDecrement_acq (long 揮発性*) |
_InterlockedDecrement_nf |
長い_InterlockedDecrement_nf (long 揮発性*) |
_InterlockedDecrement_rel |
長い_InterlockedDecrement_rel (long 揮発性*) |
_InterlockedExchange |
長い__cdecl の_InterlockedExchange (long _Target、長い揮発性) * |
_InterlockedExchange16 |
短い_InterlockedExchange16 (短い揮発性* _Target、short) |
_InterlockedExchange16_acq |
短い_InterlockedExchange16_acq (短い揮発性* _Target、short) |
_InterlockedExchange16_nf |
短い_InterlockedExchange16_nf (短い揮発性* _Target、short) |
_InterlockedExchange64 |
__int64 _InterlockedExchange64 (__int64 揮発性* _Target、__int64) |
_InterlockedExchange64_acq |
__int64 _InterlockedExchange64_acq (__int64 揮発性* _Target、__int64) |
_InterlockedExchange64_nf |
__int64 _InterlockedExchange64_nf (__int64 揮発性* _Target、__int64) |
_InterlockedExchange8 |
char (_InterlockedExchange8 文字の揮発性_Target、char *) |
_InterlockedExchange8_acq |
char (_InterlockedExchange8_acq 文字の揮発性_Target、char *) |
_InterlockedExchange8_nf |
char (_InterlockedExchange8_nf 文字の揮発性_Target、char *) |
_InterlockedExchangeAdd |
長い__cdecl の_InterlockedExchangeAdd (long 揮発性*、長い) |
_InterlockedExchangeAdd16 |
短い_InterlockedExchangeAdd16 (短い揮発性*、短い) |
_InterlockedExchangeAdd16_acq |
短い_InterlockedExchangeAdd16_acq (短い揮発性*、短い) |
_InterlockedExchangeAdd16_nf |
短い_InterlockedExchangeAdd16_nf (短い揮発性*、短い) |
_InterlockedExchangeAdd16_rel |
短い_InterlockedExchangeAdd16_rel (短い揮発性*、短い) |
_InterlockedExchangeAdd64 |
__int64 _InterlockedExchangeAdd64 (__int64 揮発性*、__int64) |
_InterlockedExchangeAdd64_acq |
__int64 _InterlockedExchangeAdd64_acq (__int64 揮発性*、__int64) |
_InterlockedExchangeAdd64_nf |
__int64 _InterlockedExchangeAdd64_nf (__int64 揮発性*、__int64) |
_InterlockedExchangeAdd64_rel |
__int64 _InterlockedExchangeAdd64_rel (__int64 揮発性*、__int64) |
_InterlockedExchangeAdd8 |
char (_InterlockedExchangeAdd8 文字の揮発性、char *) |
_InterlockedExchangeAdd8_acq |
char (_InterlockedExchangeAdd8_acq 文字の揮発性、char *) |
_InterlockedExchangeAdd8_nf |
char (_InterlockedExchangeAdd8_nf 文字の揮発性、char *) |
_InterlockedExchangeAdd8_rel |
char (_InterlockedExchangeAdd8_rel 文字の揮発性、char *) |
_InterlockedExchangeAdd_acq |
長い_InterlockedExchangeAdd_acq (long 揮発性*、長い) |
_InterlockedExchangeAdd_nf |
長い_InterlockedExchangeAdd_nf (long 揮発性*、長い) |
_InterlockedExchangeAdd_rel |
長い_InterlockedExchangeAdd_rel (long 揮発性*、長い) |
_InterlockedExchangePointer |
無効_InterlockedExchangePointer * (void * *揮発性_Target、無効) * |
_InterlockedExchangePointer_acq |
無効_InterlockedExchangePointer_acq * (void * *揮発性_Target、無効) * |
_InterlockedExchangePointer_nf |
無効_InterlockedExchangePointer_nf * (void * *揮発性_Target、無効) * |
_InterlockedExchange_acq |
長い_InterlockedExchange_acq (long _Target、長い揮発性) * |
_InterlockedExchange_nf |
長い_InterlockedExchange_nf (long _Target、長い揮発性) * |
_InterlockedIncrement |
長い__cdecl の_InterlockedIncrement (long 揮発性*) |
_InterlockedIncrement16 |
短い_InterlockedIncrement16 揮発性短い (*) |
_InterlockedIncrement16_acq |
短い_InterlockedIncrement16_acq 揮発性短い (*) |
_InterlockedIncrement16_nf |
短い_InterlockedIncrement16_nf 揮発性短い (*) |
_InterlockedIncrement16_rel |
短い_InterlockedIncrement16_rel 揮発性短い (*) |
_InterlockedIncrement64 |
__int64 _InterlockedIncrement64 (__int64 揮発性*) |
_InterlockedIncrement64_acq |
__int64 _InterlockedIncrement64_acq (__int64 揮発性*) |
_InterlockedIncrement64_nf |
__int64 _InterlockedIncrement64_nf (__int64 揮発性*) |
_InterlockedIncrement64_rel |
__int64 _InterlockedIncrement64_rel (__int64 揮発性*) |
_InterlockedIncrement_acq |
長い_InterlockedIncrement_acq (long 揮発性*) |
_InterlockedIncrement_nf |
長い_InterlockedIncrement_nf (long 揮発性*) |
_InterlockedIncrement_rel |
長い_InterlockedIncrement_rel (long 揮発性*) |
_InterlockedOr |
長い_InterlockedOr (long 揮発性*、長い) |
_InterlockedOr16 |
短い_InterlockedOr16 (短い揮発性*、短い) |
_InterlockedOr16_acq |
短い_InterlockedOr16_acq (短い揮発性*、短い) |
_InterlockedOr16_nf |
短い_InterlockedOr16_nf (短い揮発性*、短い) |
_InterlockedOr16_rel |
短い_InterlockedOr16_rel (短い揮発性*、短い) |
_InterlockedOr64 |
__int64 _InterlockedOr64 (__int64 揮発性*、__int64) |
_InterlockedOr64_acq |
__int64 _InterlockedOr64_acq (__int64 揮発性*、__int64) |
_InterlockedOr64_nf |
__int64 _InterlockedOr64_nf (__int64 揮発性*、__int64) |
_InterlockedOr64_rel |
__int64 _InterlockedOr64_rel (__int64 揮発性*、__int64) |
_InterlockedOr8 |
char (_InterlockedOr8 文字の揮発性、char *) |
_InterlockedOr8_acq |
char (_InterlockedOr8_acq 文字の揮発性、char *) |
_InterlockedOr8_nf |
char (_InterlockedOr8_nf 文字の揮発性、char *) |
_InterlockedOr8_rel |
char (_InterlockedOr8_rel 文字の揮発性、char *) |
_InterlockedOr_acq |
長い_InterlockedOr_acq (long 揮発性*、長い) |
_InterlockedOr_nf |
長い_InterlockedOr_nf (long 揮発性*、長い) |
_InterlockedOr_rel |
長い_InterlockedOr_rel (long 揮発性*、長い) |
_InterlockedXor |
長い_InterlockedXor (long 揮発性*、長い) |
_InterlockedXor16 |
短い_InterlockedXor16 (短い揮発性*、短い) |
_InterlockedXor16_acq |
短い_InterlockedXor16_acq (短い揮発性*、短い) |
_InterlockedXor16_nf |
短い_InterlockedXor16_nf (短い揮発性*、短い) |
_InterlockedXor16_rel |
短い_InterlockedXor16_rel (短い揮発性*、短い) |
_InterlockedXor64 |
__int64 _InterlockedXor64 (__int64 揮発性*、__int64) |
_InterlockedXor64_acq |
__int64 _InterlockedXor64_acq (__int64 揮発性*、__int64) |
_InterlockedXor64_nf |
__int64 _InterlockedXor64_nf (__int64 揮発性*、__int64) |
_InterlockedXor64_rel |
__int64 _InterlockedXor64_rel (__int64 揮発性*、__int64) |
_InterlockedXor8 |
char (_InterlockedXor8 文字の揮発性、char *) |
_InterlockedXor8_acq |
char (_InterlockedXor8_acq 文字の揮発性、char *) |
_InterlockedXor8_nf |
char (_InterlockedXor8_nf 文字の揮発性、char *) |
_InterlockedXor8_rel |
char (_InterlockedXor8_rel 文字の揮発性、char *) |
_InterlockedXor_acq |
長い_InterlockedXor_acq (long 揮発性*、長い) |
_InterlockedXor_nf |
長い_InterlockedXor_nf (long 揮発性*、長い) |
_InterlockedXor_rel |
長い_InterlockedXor_rel (long 揮発性*、長い) |
[ネオン]
_interlockedbittest 組み込み
プレーンによってかみ合わせる bittest 組み込みはすべてのプラットフォームで共通です。ARM は、この文書の _nf (フェンスのサフィックスなし) に説明されているように _acq、_relと、操作のバリアのセマンティクスを修飾する _nf のバリアントを先に追加します。
[関数名] |
関数プロトタイプ |
---|---|
_interlockedbittestandreset |
char の符号なし_interlockedbittestandreset (long 揮発性*、長い) |
_interlockedbittestandreset_acq |
char の符号なし_interlockedbittestandreset_acq (long 揮発性*、長い) |
_interlockedbittestandreset_nf |
char の符号なし_interlockedbittestandreset_nf (long 揮発性*、長い) |
_interlockedbittestandreset_rel |
char の符号なし_interlockedbittestandreset_rel (long 揮発性*、長い) |
_interlockedbittestandset |
char の符号なし_interlockedbittestandset (long 揮発性*、長い) |
_interlockedbittestandset_acq |
char の符号なし_interlockedbittestandset_acq (long 揮発性*、長い) |
_interlockedbittestandset_nf |
char の符号なし_interlockedbittestandset_nf (long 揮発性*、長い) |
_interlockedbittestandset_rel |
char の符号なし_interlockedbittestandset_rel (long 揮発性*、長い) |
[ネオン]