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)

[ネオン]

Hh875058.collapse_all(ja-jp,VS.110).gifメモリ バリアの制限

組み込み関数 __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; 他のすべての値は、アーキテクチャによって予約されています。

Hh875058.collapse_all(ja-jp,VS.110).gif__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 キーワードの解釈を)を参照してください。

Hh875058.collapse_all(ja-jp,VS.110).gif_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 に対応します。パラメーターの解釈はコプロセッサ依存します。詳細については、該当しないコプロセッサについては、手動を参照してください。

Hh875058.collapse_all(ja-jp,VS.110).gif_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 に対応します。パラメーターの解釈はコプロセッサ依存します。詳細については、該当しないコプロセッサについては、手動を参照してください。

Hh875058.collapse_all(ja-jp,VS.110).gif_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 に対応します。パラメーターの解釈はコプロセッサ依存します。詳細については、該当しないコプロセッサについては、手動を参照してください。

Hh875058.collapse_all(ja-jp,VS.110).gif_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": サポートされていない

Hh875058.collapse_all(ja-jp,VS.110).gif_nf (フェンスのサフィックスなし)

操作では、すべての種類としてのメモリ バリアしないことを _nf または "フェンス" サフィックスは示されません。これは、すべての一部としてのバリアする他の 3 とおりの形式とは対照的 (Express、_acq_rel) です。_nf の形式の 1 とおりの使用は複数のスレッドが実行している間、同時に更新されますが、複数のスレッドによって値が他では使用されないカウンターの統計情報を保持することです。

Hh875058.collapse_all(ja-jp,VS.110).gifインタロックされた組み込みのリスト

[関数名]

関数プロトタイプ

_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 揮発性*、長い)

[ネオン]

Hh875058.collapse_all(ja-jp,VS.110).gif_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 揮発性*、長い)

[ネオン]

参照

関連項目

コンパイラ組み込み

その他の技術情報

ARM アセンブラー リファレンス

C++ 言語リファレンス