Compartilhar via


Intrínsecos do ARM

O compilador do Visual C++ torna os seguintes intrinsics disponíveis na arquitetura de BRAÇO.Para obter mais informações sobre o BRAÇO, consulte Manual de referência da arquitetura de BRAÇO e Guia de ferramentas de assembler de BRAÇO no site de Infocenter de BRAÇO.

NÉON

As extensões de conjunto de instrução DE NÉON vetorial para o BRAÇO fornecem a única declaração vários recursos de (SIMD) de dados parecidas com aquelas no MMX e o vetor do SSE conjuntos de declaração que são comuns a processadores de arquitetura x e x64.

Os intrinsics DE NÉON são suportados, de maneira esperada no arquivo de cabeçalho arm_neon.h.O suporte do compilador do Visual C++ para os intrinsics DE NÉON lembra a do compilador de BRAÇO, que está documentado em apêndice G ARME o toolchain do compilador, referência de compilador versão 4,1 sobre ao site de Infocenter de BRAÇO.

A principal diferença entre o compilador do Visual C++ e o compilador de BRAÇO é que o compilador do Visual C++ adiciona variantes de _ex das instruções de carregar e de armazenamento do vetor de vldX e de vstX .Variantes de _ex têm um parâmetro adicional que especifica o alinhamento do argumento do ponteiro mas são idênticas ao contrário das suas contrapartes não de_ex .

Listar Braço- específico de Intrinsics

Nome da Função

Instrução

Protótipo de função

_arm_smlal

SMLAL

__int64 _arm_smlal (_RdHiLo __int64, _Rn de _Rm de int, int)

_arm_umlal

UMLAL

unsigned __int64 _arm_umlal (_RdHiLo unsigned __int64, _Rn de unsigned int, _Rm de unsigned int)

_arm_clz

CLZ

_arm_clz de unsigned int (_Rm de unsigned int)

_arm_qadd

QADD

_arm_qadd de int (_Rm de _Rn de int, int)

_arm_qdadd

QDADD

_arm_qdadd de int (_Rm de _Rn de int, int)

_arm_qdsub

QDSUB

_arm_qdsub de int (_Rm de _Rn de int, int)

_arm_qsub

QSUB

_arm_qsub de int (_Rm de _Rn de int, int)

_arm_smlabb

SMLABB

_arm_smlabb de int (_Rn de _Rm de int, int, int) de _Ra

_arm_smlabt

SMLABT

_arm_smlabt de int (_Rn de _Rm de int, int, int) de _Ra

_arm_smlatb

SMLATB

_arm_smlatb de int (_Rn de _Rm de int, int, int) de _Ra

_arm_smlatt

SMLATT

_arm_smlatt de int (_Rn de _Rm de int, int, int) de _Ra

_arm_smlalbb

SMLALBB

_arm_smlalbb __int64 (_RdHiLo __int64, _Rn de _Rm de int, int)

_arm_smlalbt

SMLALBT

_arm_smlalbt __int64 (_RdHiLo __int64, _Rn de _Rm de int, int)

_arm_smlaltb

SMLALTB

_arm_smlaltb __int64 (_RdHiLo __int64, _Rn de _Rm de int, int)

_arm_smlaltt

SMLALTT

_arm_smlaltt __int64 (_RdHiLo __int64, _Rn de _Rm de int, int)

_arm_smlawb

SMLAWB

_arm_smlawb de int (_Rn de _Rm de int, int, int) de _Ra

_arm_smlawt

SMLAWT

_arm_smlawt de int (_Rn de _Rm de int, int, int) de _Ra

_arm_smulbb

SMULBB

_arm_smulbb de int (_Rn de _Rm de int, int)

_arm_smulbt

SMULBT

_arm_smulbt de int (_Rn de _Rm de int, int)

_arm_smultb

SMULTB

_arm_smultb de int (_Rn de _Rm de int, int)

_arm_smultt

SMULTT

_arm_smultt de int (_Rn de _Rm de int, int)

_arm_smulwb

SMULWB

_arm_smulwb de int (_Rn de _Rm de int, int)

_arm_smulwt

SMULWT

_arm_smulwt de int (_Rn de _Rm de int, int)

_arm_sadd16

SADD16

int _arm_sadd16 (_Rn de _Rm de int, int)

_arm_sadd8

SADD8

int _arm_sadd8 (_Rn de _Rm de int, int)

_arm_sasx

SASX

_arm_sasx de int (_Rn de _Rm de int, int)

_arm_ssax

SSAX

_arm_ssax de int (_Rn de _Rm de int, int)

_arm_ssub16

SSUB16

int _arm_ssub16 (_Rn de _Rm de int, int)

_arm_ssub8

SSUB8

int _arm_ssub8 (_Rn de _Rm de int, int)

_arm_shadd16

SHADD16

int _arm_shadd16 (_Rn de _Rm de int, int)

_arm_shadd8

SHADD8

int _arm_shadd8 (_Rn de _Rm de int, int)

_arm_shasx

SHASX

_arm_shasx de int (_Rn de _Rm de int, int)

_arm_shsax

SHSAX

_arm_shsax de int (_Rn de _Rm de int, int)

_arm_shsub16

SHSUB16

int _arm_shsub16 (_Rn de _Rm de int, int)

_arm_shsub8

SHSUB8

int _arm_shsub8 (_Rn de _Rm de int, int)

_arm_qadd16

QADD16

int _arm_qadd16 (_Rn de _Rm de int, int)

_arm_qadd8

QADD8

int _arm_qadd8 (_Rn de _Rm de int, int)

_arm_qasx

QASX

_arm_qasx de int (_Rn de _Rm de int, int)

_arm_qsax

QSAX

_arm_qsax de int (_Rn de _Rm de int, int)

_arm_qsub16

QSUB16

int _arm_qsub16 (_Rn de _Rm de int, int)

_arm_qsub8

QSUB8

int _arm_qsub8 (_Rn de _Rm de int, int)

_arm_uadd16

UADD16

unsigned int _arm_uadd16 (_Rn de unsigned int, _Rm de unsigned int)

_arm_uadd8

UADD8

unsigned int _arm_uadd8 (_Rn de unsigned int, _Rm de unsigned int)

_arm_uasx

UASX

_arm_uasx de unsigned int (_Rn de unsigned int, _Rm de unsigned int)

_arm_usax

USAX

_arm_usax de unsigned int (_Rn de unsigned int, _Rm de unsigned int)

_arm_usub16

USUB16

unsigned int _arm_usub16 (_Rn de unsigned int, _Rm de unsigned int)

_arm_usub8

USUB8

unsigned int _arm_usub8 (_Rn de unsigned int, _Rm de unsigned int)

_arm_uhadd16

UHADD16

unsigned int _arm_uhadd16 (_Rn de unsigned int, _Rm de unsigned int)

_arm_uhadd8

UHADD8

unsigned int _arm_uhadd8 (_Rn de unsigned int, _Rm de unsigned int)

_arm_uhasx

UHASX

_arm_uhasx de unsigned int (_Rn de unsigned int, _Rm de unsigned int)

_arm_uhsax

UHSAX

_arm_uhsax de unsigned int (_Rn de unsigned int, _Rm de unsigned int)

_arm_uhsub16

UHSUB16

unsigned int _arm_uhsub16 (_Rn de unsigned int, _Rm de unsigned int)

_arm_uhsub8

UHSUB8

unsigned int _arm_uhsub8 (_Rn de unsigned int, _Rm de unsigned int)

_arm_uqadd16

UQADD16

unsigned int _arm_uqadd16 (_Rn de unsigned int, _Rm de unsigned int)

_arm_uqadd8

UQADD8

unsigned int _arm_uqadd8 (_Rn de unsigned int, _Rm de unsigned int)

_arm_uqasx

UQASX

_arm_uqasx de unsigned int (_Rn de unsigned int, _Rm de unsigned int)

_arm_uqsax

UQSAX

_arm_uqsax de unsigned int (_Rn de unsigned int, _Rm de unsigned int)

_arm_uqsub16

UQSUB16

unsigned int _arm_uqsub16 (_Rn de unsigned int, _Rm de unsigned int)

_arm_uqsub8

UQSUB8

unsigned int _arm_uqsub8 (_Rn de unsigned int, _Rm de unsigned int)

_arm_sxtab

SXTAB

_arm_sxtab de int (_Rn de int, int, _Rm de _Rotation de unsigned int)

_arm_sxtab16

SXTAB16

int _arm_sxtab16 (_Rn de _Rm de int, int, _Rotation de unsigned int)

_arm_sxtah

SXTAH

_arm_sxtah de int (_Rn de _Rm de int, int, _Rotation de unsigned int)

_arm_uxtab

UXTAB

_arm_uxtab de unsigned int (_Rn sem sinal de _Rm unsigned int, int, de _Rotation de unsigned int)

_arm_uxtab16

UXTAB16

unsigned int _arm_uxta16b (_Rn sem sinal de _Rm unsigned int, int, de _Rotation de unsigned int)

_arm_uxtah

UXTAH

_arm_uxtah de unsigned int (_Rn sem sinal de _Rm unsigned int, int, de _Rotation de unsigned int)

_arm_sxtb

SXTB

_arm_sxtb de int, int (_Rn de _Rotation de unsigned int)

_arm_sxtb16

SXTB16

int _arm_sxtb16 (_Rn de _Rotation unsigned int, int de)

_arm_sxth

SXTH

_arm_sxth de int, int (_Rn de _Rotation de unsigned int)

_arm_uxtb

UXTB

_arm_uxtb de unsigned int (_Rn de unsigned int, _Rotation de unsigned int)

_arm_uxtb16

UXTB16

unsigned int _arm_uxtb16 (_Rn de unsigned int, _Rotation de unsigned int)

_arm_uxth

UXTH

_arm_uxth de unsigned int (_Rn de unsigned int, _Rotation de unsigned int)

_arm_pkhbt

PKHBT

_arm_pkhbt de int (_Rn de _Rm de int, int, _Lsl_imm de unsigned int)

_arm_pkhtb

PKHTB

_arm_pkhtb de int (_Rn de _Rm de int, int, _Asr_imm de unsigned int)

_arm_usad8

USAD8

unsigned int _arm_usad8 (_Rn de unsigned int, _Rm de unsigned int)

_arm_usada8

USADA8

unsigned int _arm_usada8 (_Rn sem sinal de _Rm unsigned int, int, de _Ra de unsigned int)

_arm_ssat

SSAT

_arm_ssat de int (_Sat_imm de unsigned int, _Rn de _int, _Shift_type de _ARMINTR_SHIFT_T, _Shift_imm de unsigned int)

_arm_usat

USAT

_arm_usat de int (_Sat_imm de unsigned int, _Rn de _int, _Shift_type de _ARMINTR_SHIFT_T, _Shift_imm de unsigned int)

_arm_ssat16

SSAT16

int _arm_ssat16 (_Sat_imm de unsigned int, _Rn de _int)

_arm_usat16

USAT16

int _arm_usat16 (_Sat_imm de unsigned int, _Rn de _int)

_arm_rev

REV

_arm_rev de unsigned int (_Rm de unsigned int)

_arm_rev16

REV16

unsigned int _arm_rev16 (_Rm de unsigned int)

_arm_revsh

REVSH

_arm_revsh de unsigned int (_Rm de unsigned int)

_arm_smlad

SMLAD

_arm_smlad de int (_Rn de _Rm de int, int, int) de _Ra

_arm_smladx

SMLADX

_arm_smladx de int (_Rn de _Rm de int, int, int) de _Ra

_arm_smlsd

SMLSD

_arm_smlsd de int (_Rn de _Rm de int, int, int) de _Ra

_arm_smlsdx

SMLSDX

_arm_smlsdx de int (_Rn de _Rm de int, int, int) de _Ra

_arm_smmla

SMMLA

_arm_smmla de int (_Rn de _Rm de int, int, int) de _Ra

_arm_smmlar

SMMLAR

int _arm_smmlar (_Rn de _Rm de int, int, int) de _Ra

_arm_smmls

SMMLS

_arm_smmls de int (_Rn de _Rm de int, int, int) de _Ra

_arm_smmlsr

SMMLSR

_arm_smmlsr de int (_Rn de _Rm de int, int, int) de _Ra

_arm_smmul

SMMUL

_arm_smmul de int (_Rn de _Rm de int, int)

_arm_smmulr

SMMULR

_arm_smmulr de int (_Rn de _Rm de int, int)

_arm_smlald

SMLALD

_arm_smlald __int64 (_RdHiLo __int64, _Rn de _Rm de int, int)

_arm_smlaldx

SMLALDX

_arm_smlaldx __int64 (_RdHiLo __int64, _Rn de _Rm de int, int)

_arm_smlsld

SMLSLD

_arm_smlsld __int64 (_RdHiLo __int64, _Rn de _Rm de int, int)

_arm_smlsldx

SMLSLDX

_arm_smlsldx __int64 (_RdHiLo __int64, _Rn de _Rm de int, int)

_arm_smuad

SMUAD

_arm_smuad de int (_Rn de _Rm de int, int)

_arm_smuadx

SMUADX

_arm_muadxs de int (_Rn de _Rm de int, int)

_arm_smusd

SMUSD

_arm_smusd de int (_Rn de _Rm de int, int)

_arm_smusdx

SMUSDX

_arm_smusdx de int (_Rn de _Rm de int, int)

_arm_smull

SMULL

_arm_smull __int64 (_Rn de _Rm de int, int)

_arm_umull

UMULL

_arm_umull unsigned __int64 (_Rn de unsigned int, _Rm de unsigned int)

_arm_umaal

UMAAL

unsigned __int64 _arm_umaal (_RdLo sem sinal de _RdHi unsigned int, int, de _Rn de unsigned int, _Rm de unsigned int)

_arm_bfc

BFC

_arm_bfc de unsigned int (_Rd sem sinal de _Lsb unsigned int, int, de _Width de unsigned int)

_arm_bfi

BFI

_arm_bfi de unsigned int (_Rd sem sinal de _Rn unsigned int, int, de _Lsb de unsigned int, _Width de unsigned int)

_arm_rbit

RBIT

_arm_rbit de unsigned int (_Rm de unsigned int)

_arm_sbfx

SBFX

_arm_sbfx de int (_Rn de _Lsb unsigned int, int, de _Width de unsigned int)

_arm_ubfx

UBFX

_arm_ubfx de unsigned int (_Rn sem sinal de _Lsb unsigned int, int, de _Width de unsigned int)

_arm_sdiv

SDIV

_arm_sdiv de int (_Rn de _Rm de int, int)

_arm_udiv

UDIV

_arm_udiv de unsigned int (_Rn de unsigned int, _Rm de unsigned int)

__cps

CPS

__cps vagos (_Ops sem sinal de _Flags unsigned int, int, de _Mode de unsigned int)

__dmb

DMB

__dmb vago (unsigned int _Type)

Insere uma operação de barreira de memória no fluxo da declaração.O parâmetro _Type especifica o tipo de restrição que a barreira aplicado.

Para obter mais informações sobre tipos de restrições que podem ser aplicadas, consulte Limitações de barreira de memória.

__dsb

DSB

__dsb vago (_Type de unsigned int)

Insere uma operação de barreira de memória no fluxo da declaração.O parâmetro _Type especifica o tipo de restrição que a barreira aplicado.

Para obter mais informações sobre tipos de restrições que podem ser aplicadas, consulte Limitações de barreira de memória.

__isb

ISB

__isb vago (_Type de unsigned int)

Insere uma operação de barreira de memória no fluxo da declaração.O parâmetro _Type especifica o tipo de restrição que a barreira aplicado.

Para obter mais informações sobre tipos de restrições que podem ser aplicadas, consulte Limitações de barreira de memória.

__emit

__emit vago (opcode __int32 não assinados)

Insere uma instrução especificada no fluxo das instruções que é saída pelo compilador.

O valor de opcode deve ser uma expressão constante que é conhecido em tempo de compilação.O tamanho de uma palavra de declaração é 16 bits e os 16 bits significativos de opcode são ignorados.

O compilador não faz nenhuma tentativa de interpretar o conteúdo de opcode e não garante uma CPU ou um estado de memória antes da instrução inserida é executada.

O compilador pressupõe que o CPU e os estados de memória são inalteradas após a instrução inserida é executada.Como consequência, as instruções que alteram o estado podem ter um impacto prejudicial no código normal que é gerado pelo compilador.

Por esse motivo, use emit inserir somente as instruções que afetam um estado da CPU que o compilador não faz normalmente de processo por exemplo, co-processador - ou implementar as funções que são declaradas usando declspec(naked).

__hvc

HVC

__hvc de unsigned int (unsigned int,…)

__iso_volatile_load16

__int16 __iso_volatile_load16 const (*) __int16 temporários

Para obter mais informações, consulte instrinsics de __iso_volatile_load/store.

__iso_volatile_load32

__int32 __iso_volatile_load32 const (*) __int32 temporários

Para obter mais informações, consulte instrinsics de __iso_volatile_load/store.

__iso_volatile_load64

__int64 __iso_volatile_load64 __int64 voláteis const (*)

Para obter mais informações, consulte instrinsics de __iso_volatile_load/store.

__iso_volatile_load8

__int8 __iso_volatile_load8 const (*) __int8 temporários

Para obter mais informações, consulte instrinsics de __iso_volatile_load/store.

__iso_volatile_store16

__iso_volatile_store16 vago (* __int16 temporário, __int16)

Para obter mais informações, consulte instrinsics de __iso_volatile_load/store.

__iso_volatile_store32

__iso_volatile_store32 vago (* __int32 temporário, __int32)

Para obter mais informações, consulte instrinsics de __iso_volatile_load/store.

__iso_volatile_store64

__int64 temporário __iso_volatile_store64 vago (*), __int64

Para obter mais informações, consulte instrinsics de __iso_volatile_load/store.

__iso_volatile_store8

__iso_volatile_store8 vago (* __int8 temporário, __int8)

Para obter mais informações, consulte instrinsics de __iso_volatile_load/store.

__ldrexd

LDREXD

__ldrexd __int64 __int64 temporário const (*)

__prefetch

PLD

__prefetch vago de __cdecl (*) const vago

Fornece uma dica de PLD memória do sistema que a memória em ou próximo de endereço especificado pode ser acessada em breve.Alguns sistemas podem optar para otimizar para aquele padrão de acesso de memória para desempenho em tempo de execução de aumento.No entanto, o ponto de vista de linguagem C++, a função não tem efeito perceptível, e pode não fazer nada.

__rdpmccntr64

unsigned __int64 __rdpmccntr64 (vácuo)

__sev

SEV

() vácuo __sev vago

__static_assert

__static_assert vago (int, char const *)

__swi

SVC

__swi de unsigned int (unsigned int,…)

__trap

BKPT

__trap de int, int (…)

__wfe

WFE

() vácuo __wfe vago

__wfi

WFI

() vácuo __wfi vago

_AddSatInt

QADD

_AddSatInt de int (int, int)

_CopyDoubleFromInt64

_CopyDoubleFromInt64 duplas () __int64

_CopyFloatFromInt32

float _CopyFloatFromInt32 (__int32)

_CopyInt32FromFloat

__int32 _CopyInt32FromFloat (flutuante)

_CopyInt64FromDouble

__int64 _CopyInt64FromDouble double ()

_CountLeadingOnes

_CountLeadingOnes unsigned int (de execução demorada não assinados)

_CountLeadingOnes64

unsigned int _CountLeadingOnes64) (unsigned __int64

_CountLeadingSigns

_CountLeadingSigns unsigned int de longo ()

_CountLeadingSigns64

unsigned int () _CountLeadingSigns64 __int64

_CountLeadingZeros

_CountLeadingZeros unsigned int (de execução demorada não assinados)

_CountLeadingZeros64

unsigned int _CountLeadingZeros64) (unsigned __int64

_CountOneBits

_CountOneBits unsigned int (de execução demorada não assinados)

_CountOneBits64

unsigned int _CountOneBits64) (unsigned __int64

_DAddSatInt

QDADD

_DAddSatInt de int (int, int)

_DSubSatInt

QDSUB

_DSubSatInt de int (int, int)

_isunordered

int _isunordered (double, double)

_isunorderedf

_isunorderedf de int (flutuante, flutuante)

_MoveFromCoprocessor

MRC

_MoveFromCoprocessor de unsigned int (unsigned int, int sem sinal, unsigned int, int sem sinal, unsigned int)

Lê dados de um co-processador de BRAÇO usando as instruções de transferência de dados de co-processador.Para obter mais informações, consulte: _MoveFromCoprocessor, _MoveFromCoprocessor2.

_MoveFromCoprocessor2

MRC2

unsigned int _MoveFromCoprocessor2 (unsigned int, int sem sinal, unsigned int, int sem sinal, unsigned int)

Lê dados de um co-processador de BRAÇO usando as instruções de transferência de dados de co-processador.Para obter mais informações, consulte: _MoveFromCoprocessor, _MoveFromCoprocessor2.

_MoveFromCoprocessor64

MRRC

unsigned __int64 _MoveFromCoprocessor64 (unsigned int, int sem sinal, unsigned int)

Lê dados de um co-processador de BRAÇO usando as instruções de transferência de dados de co-processador.Para obter mais informações, consulte: _MoveFromCoprocessor64.

_MoveToCoprocessor

MCR

_MoveToCoprocessor vago (unsigned int, int sem sinal, unsigned int, int sem sinal, unsigned int, int não assinados)

Lê dados de um co-processador de BRAÇO usando as instruções de transferência de dados de co-processador.Para obter mais informações, consulte: _MoveToCoprocessor, _MoveToCoprocessor2.

_MoveToCoprocessor2

MCR2

_MoveToCoprocessor2 vago (unsigned int, int sem sinal, unsigned int, int sem sinal, unsigned int, int não assinados)

Lê dados de um co-processador de BRAÇO usando as instruções de transferência de dados de co-processador.Para obter mais informações, consulte: _MoveToCoprocessor, _MoveToCoprocessor2.

_MoveToCoprocessor64

MCRR

_MoveToCoprocessor64 vago (unsigned __int64, unsigned int, int sem sinal, unsigned int)

Lê dados de um co-processador de BRAÇO usando as instruções de transferência de dados de co-processador.Para obter mais informações, consulte: _MoveToCoprocessor64.

_MulHigh

_MulHigh longo (tempo, long)

_MulUnsignedHigh

longos longos sem sinal de _MulUnsignedHigh (unsigned long, não assinados)

_ReadBankedReg

SRA.

_ReadBankedReg de int (_Reg de int)

_ReadStatusReg

SRA.

_ReadStatusReg de int (int)

_SubSatInt

QSUB

_SubSatInt de int (int, int)

_WriteBankedReg

MSR

_WriteBankedReg vago (_Value de _Reg de int, int)

_WriteStatusReg

MSR

_WriteStatusReg vago (int, int, int)

[NÉON]

Hh875058.collapse_all(pt-br,VS.110).gifLimitações de barreira de memória

As funções intrínsecas __dmb (barreira de memória dos dados), __dsb (barreira de sincronização de dados), e uso de __isb barreira (declaração) de sincronização dos seguintes valores predefinidos especificar o limite de barreira de memória em termos de domínio e de tipo compartilhamento de acesso que são afetados pela operação.

Valor de restrição

Descrição

_ARM_BARRIER_SY

O sistema, lê e grava completos.

_ARM_BARRIER_ST

Sistema completo, gravará somente.

_ARM_BARRIER_ISH

Compartilhável interno, lê e grava.

_ARM_BARRIER_ISHST

Compartilháveis interno, gravará somente.

_ARM_BARRIER_NSH

Não compartilhável, lê e grava.

_ARM_BARRIER_NSHST

Não compartilhável, gravará somente.

_ARM_BARRIER_OSH

Compartilhável externo, lê e grava.

_ARM_BARRIER_OSHST

Compartilháveis externo, gravará somente.

Para o tipo intrínseco de __isb , a única restrição que está atualmente é válido; _ARM_BARRIER_SY todos os outros valores são reservadas pela arquitetura.

Hh875058.collapse_all(pt-br,VS.110).gifinstrinsics de __iso_volatile_load/store

Essas funções intrínsecas executam explicitamente e carrega os armazenamentos que não estão sujeitos às otimizações de compilador.

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

Parâmetros

  • Location
    O endereço de um local da memória de leitura ou gravação a.

  • Value (intrinsics de armazenamento somente)
    O valor para gravar o local da memória especificado.

Valor de retorno (intrinsics de carregamento somente)

O valor do local da memória que é especificado por Location.

Comentários

Você pode usar os intrinsics de __iso_volatile_load8/16/32/64 e de __iso_volatile_store8/16/32/64 para executar explicitamente os acessos de memória que não estão sujeitos às otimizações de compilador.O compilador não pode remover, synthetize, ou alterar a ordem relativo dessas operações, mas não produz barreiras implícitas de memória de hardware.Como consequência, o hardware ainda pode reorganizar os acessos de memória perceptíveis em vários segmentos.Mais precisamente, esses intrinsics são equivalentes a seguir expressões como compilados em /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;

Observe que os intrinsics têm ponteiros temporários para acomodar variáveis temporários.No entanto, não há necessidade ou recomendação usar ponteiros voláteis como argumentos; a semântica dessas operações é exatamente a mesma se um tipo comum, permanente é usado.

Para obter mais informações sobre o argumento de linha de comando de /volatile:iso , consulte /volatile (Interpretação da palavra-chave volatile).

Hh875058.collapse_all(pt-br,VS.110).gif_MoveFromCoprocessor, _MoveFromCoprocessor2

Essas funções intrínsecas ler dados de co-processadores de BRAÇO usando as instruções de transferência de dados de co-processador.

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

Parâmetros

  • coproc
    Número de co-processador no intervalo 0 a 15.

  • opcode1
    Opcode Co-processador- específico no intervalo 0 a 7

  • crn
    Número de registro de co-processador, no intervalo 0 a 15, que especifica o primeiro operando à declaração.

  • crm
    Número de registro de co-processador, no intervalo 0 a 15, que especifica uma fonte ou um operando adicional de destino.

  • opcode2
    Opcode co-processador- específico adicional no intervalo 0 a 7.

Retornar valor

O valor que é lido de co-processador.

Comentários

Os valores de todos os cinco parâmetros do tipo intrínseco devem ser expressões constantes que são conhecidos em tempo de compilação.

_MoveFromCoprocessor usa a declaração de MRC; usa MRC2 de _MoveFromCoprocessor2 .Os parâmetros correspondentes aos bitfields que são codificados diretamente nas palavras de declaração.A interpretação de parâmetros é dependente co-processador-.Para obter mais informações, consulte o manual para o co-processador em questão.

Hh875058.collapse_all(pt-br,VS.110).gif_MoveFromCoprocessor64

Ler dados de co-processadores de BRAÇO usando as instruções de transferência de dados de co-processador.

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

Parâmetros

  • coproc
    Número de co-processador no intervalo 0 a 15.

  • opcode1
    Opcode Co-processador- específico no intervalo 0 a 15.

  • crm
    Número de registro de co-processador, no intervalo 0 a 15, que especifica uma fonte ou um operando adicional de destino.

Valor returns

O valor que é lido de co-processador.

Comentários

Os valores de todos os três parâmetros do tipo intrínseco devem ser expressões constantes que são conhecidos em tempo de compilação.

_MoveFromCoprocessor64 usa a declaração de MRRC.Os parâmetros correspondentes aos bitfields que são codificados diretamente nas palavras de declaração.A interpretação de parâmetros é dependente co-processador-.Para obter mais informações, consulte o manual para o co-processador em questão.

Hh875058.collapse_all(pt-br,VS.110).gif_MoveToCoprocessor, _MoveToCoprocessor2

Essas funções intrínsecas gravar dados para co-processadores de BRAÇO usando as instruções de transferência de dados de co-processador.

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

Parâmetros

  • value
    O valor a ser gravado no co-processador.

  • coproc
    Número de co-processador no intervalo 0 a 15.

  • opcode1
    Opcode Co-processador- específico no intervalo 0 a 7.

  • crn
    Número de registro de co-processador, no intervalo 0 a 15, que especifica o primeiro operando à declaração.

  • crm
    Número de registro de co-processador, no intervalo 0 a 15, que especifica uma fonte ou um operando adicional de destino.

  • opcode2
    Opcode co-processador- específico adicional no intervalo 0 a 7.

Retornar valor

Nenhum.

Comentários

Os valores de coproc, de opcode1, de crn, de crm, e de parâmetros de opcode2 deste tipo intrínseco devem ser expressões constantes que são conhecidos em tempo de compilação.

_MoveToCoprocessor usa a declaração de MCR; usa MCR2 de _MoveToCoprocessor2 .Os parâmetros correspondentes aos bitfields que são codificados diretamente nas palavras de declaração.A interpretação de parâmetros é dependente co-processador-.Para obter mais informações, consulte o manual para o co-processador em questão.

Hh875058.collapse_all(pt-br,VS.110).gif_MoveToCoprocessor64

Essas funções intrínsecas gravar dados para co-processadores de BRAÇO usando as instruções de transferência de dados de co-processador.

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

Parâmetros

  • coproc
    Número de co-processador no intervalo 0 a 15.

  • opcode1
    Opcode Co-processador- específico no intervalo 0 a 15.

  • crm
    Número de registro de co-processador, no intervalo 0 a 15, que especifica uma fonte ou um operando adicional de destino.

Retornar valor

Nenhum.

Comentários

Os valores de coproc, de opcode1, e de parâmetros de crm deste tipo intrínseco devem ser expressões constantes que são conhecidos em tempo de compilação.

_MoveFromCoprocessor64 usa a declaração de MCRR.Os parâmetros correspondentes aos bitfields que são codificados diretamente nas palavras de declaração.A interpretação de parâmetros é dependente co-processador-.Para obter mais informações, consulte o manual para o co-processador em questão.

Suporte de BRAÇO para Intrinsics de outras arquiteturas

A tabela a seguir lista intrinsics de outras arquiteturas que são suportadas em plataformas de BRAÇO.Onde o comportamento de um tipo intrínseco no BRAÇO difere do comportamento em outras arquiteturas de hardware, detalhes adicionais são observados.

Nome da Função

Protótipo de função

__assume

(int) __assume vago

__code_seg

__code_seg vago (char const *)

__debugbreak

__debugbreak vago de __cdecl (vácuo)

__fastfail

__fastfail de vácuo de __declspec () noreturn (unsigned int)

__nop

() vácuo __nop vago

ObservaçãoObservação
Em plataformas de BRAÇO, essa função gera uma instrução de NOP se ele é implementado na arquitetura de destino; caso contrário, uma instrução alternativo que não modifique o estado do programa ou o CPU é gerado- por exemplo, MOV r8, r8.Isso é funcional equivalente ao tipo intrínseco de __nop para outras arquiteturas de hardware.Porque uma declaração que não tem efeito sobre o estado do programa ou de CPU pode ser ignorada pela arquitetura de destino como uma otimização, a instrução não necessariamente consome ciclos de CPU.Como consequência, não use o tipo intrínseco de __nop para manipular o tempo de execução de uma sequência de código a menos que você tenha certeza sobre como o CPU irá se comportar.Em vez disso, você pode usar o tipo intrínseco de __nop para alinhar a declaração a seguir para um endereço de 32 bits específico do limite.

__yield

() vácuo __yield vago

ObservaçãoObservação
Em plataformas de BRAÇO, essa função gera a declaração de RENDIMENTO, que indica que o segmento está executando uma tarefa que pode temporariamente ser suspendida execução (por exemplo, a spinlock- sem negativamente a afectação do programa.Isso permite que o CPU para realizar outras tarefas durante verificará de execução que poderiam desperdiçados caso contrário.

_AddressOfReturnAddress

vácuo _AddressOfReturnAddress vácuo (*)

_BitScanForward

_BitScanForward sem sinal char (unsigned long * _Index, _Mask unsigned long)

_BitScanReverse

_BitScanReverse sem sinal char (unsigned long * _Index, _Mask unsigned long)

mais _bittest

char sem sinal mais longo _bittest const (*), longo

_bittestandcomplement

_bittestandcomplement char unsigned long (*), longo

_bittestandreset

_bittestandreset char unsigned long (*), longo

_bittestandset

_bittestandset char unsigned long (*), longo

_byteswap_uint64

unsigned __int64 __cdecl _byteswap_uint64) (unsigned __int64

_byteswap_ulong

_byteswap_ulong unsigned long de __cdecl longos (sem sinal)

_byteswap_ushort

_byteswap_ushort unsigned short de __cdecl (unsigned short)

_disable

__cdecl vago _disable (vácuo)

ObservaçãoObservação
Em plataformas de BRAÇO, essa função gera a declaração de CPSID; só está disponível como um tipo intrínseco.

_enable

__cdecl vago _enable (vácuo)

ObservaçãoObservação
Em plataformas de BRAÇO, essa função gera a declaração de CPSIE; só está disponível como um tipo intrínseco.

_lrotl

_lrotl unsigned long de __cdecl (unsigned long, int)

_lrotr

_lrotr unsigned long de __cdecl (unsigned long, int)

mais _ReadBarrier

mais vácuo () _ReadBarrier vago

mais _ReadWriteBarrier

mais vácuo () _ReadWriteBarrier vago

_ReturnAddress

vácuo _ReturnAddress vácuo (*)

_rotl

_rotl sem sinal de __cdecl de int (_Value de unsigned int, int) de _Shift

_rotl16

_rotl16 unsigned short (_Value unsigned short, _Shift sem sinal char)

_rotl64

unsigned __int64 __cdecl _rotl64 (_Value unsigned __int64, _Shift de int)

_rotl8

char sem sinal _rotl8 (_Value sem sinal char, _Shift sem sinal char)

_rotr

_rotr sem sinal de __cdecl de int (_Value de unsigned int, int) de _Shift

_rotr16

_rotr16 unsigned short (_Value unsigned short, _Shift sem sinal char)

_rotr64

unsigned __int64 __cdecl _rotr64 (_Value unsigned __int64, _Shift de int)

_rotr8

char sem sinal _rotr8 (_Value sem sinal char, _Shift sem sinal char)

_setjmpex

_setjmpex de __cdecl de int (jmp_buf)

mais _WriteBarrier

mais vácuo () _WriteBarrier vago

[NÉON]

Intrinsics com barreira

Os intrinsics com barreira são um conjunto de intrinsics que são usados para executar operações ler-alterar- atômicas de escrita.Alguns de eles são comuns a todas as plataformas.São listados aqui separadamente porque há um grande número de eles, mas porque suas definições são basicamente redundantes, é mais fácil pensar em geral sobre eles.Seus nomes podem ser usados para derivar os comportamentos exatos.

A tabela a seguir resume o suporte de BRAÇO de intrinsics bloqueados os mais non-bittest.Cada célula na tabela corresponde a um nome que é derivado acrescentando o nome da operação na célula mais à esquerda da linha e o nome do tipo de para a célula superior da coluna _Interlocked.Por exemplo, a célula na interseção de linha de Xor e coluna de 8 corresponde a _InterlockedXor8 e é totalmente suoprtado.A maioria das funções oferecem suporte para esses sufixos opcionais: _acq, _rel, e _nf.O sufixo de _acq indica que obtém “e” semântico o sufixo de _rel indica uma “versão” semântica.Esses sufixos são documentados na documentação de IPF no MSDN._nf ou do sufixo “nenhuma circunda” é exclusivo ARMAR-SE e são discutidos na próxima seção.

8

16

32

64

P

Adicionar

Nenhum

Nenhum

Total

Total

Nenhum

And

Total

Total

Total

Total

Nenhum

CompareExchange

Total

Total

Total

Total

Total

Redução

Nenhum

Total

Total

Total

Nenhum

Exchange

Parcial

Parcial

Parcial

Parcial

Parcial

ExchangeAdd

Total

Total

Total

Total

Nenhum

Incremento

Nenhum

Total

Total

Total

Nenhum

Ou

Total

Total

Total

Total

Nenhum

Xor

Total

Total

Total

Total

Nenhum

Chave:

  • Completamente: suporte claramente, _acq, _rel, e formulários de _nf .

  • Parcial: suporte claramente, _acq, e formulários de _nf .

  • Nenhum: Não suportado

Hh875058.collapse_all(pt-br,VS.110).gifsufixo de _nf (nenhuma circunda)

_nf ou do sufixo “nenhuma circunda” indicam que a operação não se comporta como qualquer tipo de barreira de memória.Isso está em contraste com outros três formas (lisos, _acq, e _rel), que todos se comportem como qualquer tipo de barreira.Um uso possível de formulários de _nf é manter um contador de estatísticas que estão atualizados por vários segmentos ao mesmo tempo mas o cujo valor não é usado de forma quando vários segmentos executa.

Hh875058.collapse_all(pt-br,VS.110).gifLista de Intrinsics com barreira

Nome da Função

Protótipo de função

_InterlockedAdd

_InterlockedAdd longo _volatile longos (*), longo

_InterlockedAdd64

__int64 _InterlockedAdd64 volátil __int64 (*), __int64

_InterlockedAdd64_acq

__int64 _InterlockedAdd64_acq volátil __int64 (*), __int64

_InterlockedAdd64_nf

__int64 _InterlockedAdd64_nf volátil __int64 (*), __int64

_InterlockedAdd64_rel

__int64 _InterlockedAdd64_rel volátil __int64 (*), __int64

_InterlockedAdd_acq

_InterlockedAdd_acq longo tempo volátil (*), longo

_InterlockedAdd_nf

_InterlockedAdd_nf longo tempo volátil (*), longo

_InterlockedAdd_rel

_InterlockedAdd_rel longo tempo volátil (*), longo

_InterlockedAnd

_InterlockedAnd longo tempo volátil (*), longo

_InterlockedAnd16

_InterlockedAnd16 abreviada (volátil tempo curto, *)

_InterlockedAnd16_acq

_InterlockedAnd16_acq abreviada (volátil tempo curto, *)

_InterlockedAnd16_nf

_InterlockedAnd16_nf abreviada (volátil tempo curto, *)

_InterlockedAnd16_rel

_InterlockedAnd16_rel abreviada (volátil tempo curto, *)

_InterlockedAnd64

__int64 _InterlockedAnd64 volátil __int64 (*), __int64

_InterlockedAnd64_acq

__int64 _InterlockedAnd64_acq volátil __int64 (*), __int64

_InterlockedAnd64_nf

__int64 _InterlockedAnd64_nf volátil __int64 (*), __int64

_InterlockedAnd64_rel

__int64 _InterlockedAnd64_rel volátil __int64 (*), __int64

_InterlockedAnd8

char _InterlockedAnd8 volátil char (*), char

_InterlockedAnd8_acq

char _InterlockedAnd8_acq volátil char (*), char

_InterlockedAnd8_nf

char _InterlockedAnd8_nf volátil char (*), char

_InterlockedAnd8_rel

char _InterlockedAnd8_rel volátil char (*), char

_InterlockedAnd_acq

_InterlockedAnd_acq longo tempo volátil (*), longo

_InterlockedAnd_nf

_InterlockedAnd_nf longo tempo volátil (*), longo

_InterlockedAnd_rel

_InterlockedAnd_rel longo tempo volátil (*), longo

_InterlockedCompareExchange

_InterlockedCompareExchange longo de __cdecl (long volátil *, longo, longo)

_InterlockedCompareExchange16

_InterlockedCompareExchange16 abreviada (volátil curto *, curto, curto)

_InterlockedCompareExchange16_acq

_InterlockedCompareExchange16_acq abreviada (volátil curto *, curto, curto)

_InterlockedCompareExchange16_nf

_InterlockedCompareExchange16_nf abreviada (volátil curto *, curto, curto)

_InterlockedCompareExchange16_rel

_InterlockedCompareExchange16_rel abreviada (volátil curto *, curto, curto)

_InterlockedCompareExchange64

__int64 _InterlockedCompareExchange64 __int64 volátil (*), __int64, __int64

_InterlockedCompareExchange64_acq

__int64 _InterlockedCompareExchange64_acq __int64 volátil (*), __int64, __int64

_InterlockedCompareExchange64_nf

__int64 _InterlockedCompareExchange64_nf __int64 volátil (*), __int64, __int64

_InterlockedCompareExchange64_rel

__int64 _InterlockedCompareExchange64_rel __int64 volátil (*), __int64, __int64

_InterlockedCompareExchange8

char _InterlockedCompareExchange8 volátil char (*), char, char

_InterlockedCompareExchange8_acq

char _InterlockedCompareExchange8_acq volátil char (*), char, char

_InterlockedCompareExchange8_nf

char _InterlockedCompareExchange8_nf volátil char (*), char, char

_InterlockedCompareExchange8_rel

char _InterlockedCompareExchange8_rel volátil char (*), char, char

_InterlockedCompareExchangePointer

vácuo * _InterlockedCompareExchangePointer vácuo (* volátil *, vácuo *, vácuo *)

_InterlockedCompareExchangePointer_acq

vácuo * _InterlockedCompareExchangePointer_acq (* vácuo volátil *, vácuo *, vácuo *)

_InterlockedCompareExchangePointer_nf

vácuo * _InterlockedCompareExchangePointer_nf vácuo (* volátil *, vácuo *, vácuo *)

_InterlockedCompareExchangePointer_rel

vácuo * _InterlockedCompareExchangePointer_rel (* vácuo volátil *, vácuo *, vácuo *)

_InterlockedCompareExchange_acq

_InterlockedCompareExchange_acq longo (long volátil *, longo, longo)

_InterlockedCompareExchange_nf

_InterlockedCompareExchange_nf longo (long volátil *, longo, longo)

_InterlockedCompareExchange_rel

_InterlockedCompareExchange_rel longo (long volátil *, longo, longo)

_InterlockedDecrement

_InterlockedDecrement longo de __cdecl (long volátil *)

_InterlockedDecrement16

_InterlockedDecrement16 abreviada (volátil curto *)

_InterlockedDecrement16_acq

_InterlockedDecrement16_acq abreviada (volátil curto *)

_InterlockedDecrement16_nf

_InterlockedDecrement16_nf abreviada (volátil curto *)

_InterlockedDecrement16_rel

_InterlockedDecrement16_rel abreviada (volátil curto *)

_InterlockedDecrement64

__int64 _InterlockedDecrement64 (*) volátil __int64

_InterlockedDecrement64_acq

__int64 _InterlockedDecrement64_acq (*) volátil __int64

_InterlockedDecrement64_nf

__int64 _InterlockedDecrement64_nf (*) volátil __int64

_InterlockedDecrement64_rel

__int64 _InterlockedDecrement64_rel (*) volátil __int64

_InterlockedDecrement_acq

_InterlockedDecrement_acq longo tempo volátil (*)

_InterlockedDecrement_nf

_InterlockedDecrement_nf longo tempo volátil (*)

_InterlockedDecrement_rel

_InterlockedDecrement_rel longo tempo volátil (*)

_InterlockedExchange

_InterlockedExchange longo de __cdecl (long volátil * _Target, longos)

_InterlockedExchange16

_InterlockedExchange16 abreviada (volátil curto * _Target, curtas)

_InterlockedExchange16_acq

_InterlockedExchange16_acq abreviada (volátil curto * _Target, curtas)

_InterlockedExchange16_nf

_InterlockedExchange16_nf abreviada (volátil curto * _Target, curtas)

_InterlockedExchange64

__int64 _InterlockedExchange64 __int64 volátil (*), _Target __int64

_InterlockedExchange64_acq

__int64 _InterlockedExchange64_acq __int64 volátil (*), _Target __int64

_InterlockedExchange64_nf

__int64 _InterlockedExchange64_nf __int64 volátil (*), _Target __int64

_InterlockedExchange8

char _InterlockedExchange8 volátil char (*), _Target char

_InterlockedExchange8_acq

char _InterlockedExchange8_acq volátil char (*), _Target char

_InterlockedExchange8_nf

char _InterlockedExchange8_nf volátil char (*), _Target char

_InterlockedExchangeAdd

_InterlockedExchangeAdd o longo do tempo __cdecl (*), o longo volátil

_InterlockedExchangeAdd16

_InterlockedExchangeAdd16 abreviada (volátil tempo curto, *)

_InterlockedExchangeAdd16_acq

_InterlockedExchangeAdd16_acq abreviada (volátil tempo curto, *)

_InterlockedExchangeAdd16_nf

_InterlockedExchangeAdd16_nf abreviada (volátil tempo curto, *)

_InterlockedExchangeAdd16_rel

_InterlockedExchangeAdd16_rel abreviada (volátil tempo curto, *)

_InterlockedExchangeAdd64

__int64 _InterlockedExchangeAdd64 volátil __int64 (*), __int64

_InterlockedExchangeAdd64_acq

__int64 _InterlockedExchangeAdd64_acq volátil __int64 (*), __int64

_InterlockedExchangeAdd64_nf

__int64 _InterlockedExchangeAdd64_nf volátil __int64 (*), __int64

_InterlockedExchangeAdd64_rel

__int64 _InterlockedExchangeAdd64_rel volátil __int64 (*), __int64

_InterlockedExchangeAdd8

char _InterlockedExchangeAdd8 volátil char (*), char

_InterlockedExchangeAdd8_acq

char _InterlockedExchangeAdd8_acq volátil char (*), char

_InterlockedExchangeAdd8_nf

char _InterlockedExchangeAdd8_nf volátil char (*), char

_InterlockedExchangeAdd8_rel

char _InterlockedExchangeAdd8_rel volátil char (*), char

_InterlockedExchangeAdd_acq

_InterlockedExchangeAdd_acq longo tempo volátil (*), longo

_InterlockedExchangeAdd_nf

_InterlockedExchangeAdd_nf longo tempo volátil (*), longo

_InterlockedExchangeAdd_rel

_InterlockedExchangeAdd_rel longo tempo volátil (*), longo

_InterlockedExchangePointer

vácuo * _InterlockedExchangePointer (* vácuo volátil * _Target, vácuo *)

_InterlockedExchangePointer_acq

vácuo * _InterlockedExchangePointer_acq (* vácuo volátil * _Target, vácuo *)

_InterlockedExchangePointer_nf

vácuo * _InterlockedExchangePointer_nf (* vácuo volátil * _Target, vácuo *)

_InterlockedExchange_acq

_InterlockedExchange_acq longo (long volátil * _Target, longos)

_InterlockedExchange_nf

_InterlockedExchange_nf longo (long volátil * _Target, longos)

_InterlockedIncrement

_InterlockedIncrement longo de __cdecl (long volátil *)

_InterlockedIncrement16

_InterlockedIncrement16 abreviada (volátil curto *)

_InterlockedIncrement16_acq

_InterlockedIncrement16_acq abreviada (volátil curto *)

_InterlockedIncrement16_nf

_InterlockedIncrement16_nf abreviada (volátil curto *)

_InterlockedIncrement16_rel

_InterlockedIncrement16_rel abreviada (volátil curto *)

_InterlockedIncrement64

__int64 _InterlockedIncrement64 (*) volátil __int64

_InterlockedIncrement64_acq

__int64 _InterlockedIncrement64_acq (*) volátil __int64

_InterlockedIncrement64_nf

__int64 _InterlockedIncrement64_nf (*) volátil __int64

_InterlockedIncrement64_rel

__int64 _InterlockedIncrement64_rel (*) volátil __int64

_InterlockedIncrement_acq

_InterlockedIncrement_acq longo tempo volátil (*)

_InterlockedIncrement_nf

_InterlockedIncrement_nf longo tempo volátil (*)

_InterlockedIncrement_rel

_InterlockedIncrement_rel longo tempo volátil (*)

_InterlockedOr

_InterlockedOr longo tempo volátil (*), longo

_InterlockedOr16

_InterlockedOr16 abreviada (volátil tempo curto, *)

_InterlockedOr16_acq

_InterlockedOr16_acq abreviada (volátil tempo curto, *)

_InterlockedOr16_nf

_InterlockedOr16_nf abreviada (volátil tempo curto, *)

_InterlockedOr16_rel

_InterlockedOr16_rel abreviada (volátil tempo curto, *)

_InterlockedOr64

__int64 _InterlockedOr64 volátil __int64 (*), __int64

_InterlockedOr64_acq

__int64 _InterlockedOr64_acq volátil __int64 (*), __int64

_InterlockedOr64_nf

__int64 _InterlockedOr64_nf volátil __int64 (*), __int64

_InterlockedOr64_rel

__int64 _InterlockedOr64_rel volátil __int64 (*), __int64

_InterlockedOr8

char _InterlockedOr8 volátil char (*), char

_InterlockedOr8_acq

char _InterlockedOr8_acq volátil char (*), char

_InterlockedOr8_nf

char _InterlockedOr8_nf volátil char (*), char

_InterlockedOr8_rel

char _InterlockedOr8_rel volátil char (*), char

_InterlockedOr_acq

_InterlockedOr_acq longo tempo volátil (*), longo

_InterlockedOr_nf

_InterlockedOr_nf longo tempo volátil (*), longo

_InterlockedOr_rel

_InterlockedOr_rel longo tempo volátil (*), longo

_InterlockedXor

_InterlockedXor longo tempo volátil (*), longo

_InterlockedXor16

_InterlockedXor16 abreviada (volátil tempo curto, *)

_InterlockedXor16_acq

_InterlockedXor16_acq abreviada (volátil tempo curto, *)

_InterlockedXor16_nf

_InterlockedXor16_nf abreviada (volátil tempo curto, *)

_InterlockedXor16_rel

_InterlockedXor16_rel abreviada (volátil tempo curto, *)

_InterlockedXor64

__int64 _InterlockedXor64 volátil __int64 (*), __int64

_InterlockedXor64_acq

__int64 _InterlockedXor64_acq volátil __int64 (*), __int64

_InterlockedXor64_nf

__int64 _InterlockedXor64_nf volátil __int64 (*), __int64

_InterlockedXor64_rel

__int64 _InterlockedXor64_rel volátil __int64 (*), __int64

_InterlockedXor8

char _InterlockedXor8 volátil char (*), char

_InterlockedXor8_acq

char _InterlockedXor8_acq volátil char (*), char

_InterlockedXor8_nf

char _InterlockedXor8_nf volátil char (*), char

_InterlockedXor8_rel

char _InterlockedXor8_rel volátil char (*), char

_InterlockedXor_acq

_InterlockedXor_acq longo tempo volátil (*), longo

_InterlockedXor_nf

_InterlockedXor_nf longo tempo volátil (*), longo

_InterlockedXor_rel

_InterlockedXor_rel longo tempo volátil (*), longo

[NÉON]

Hh875058.collapse_all(pt-br,VS.110).gifOs Intrinsics os mais _interlockedbittest

Os intrinsics os mais bittest bloqueados planície são comuns a todas as plataformas.O BRAÇO adiciona _acq, _rel, e variantes de _nf , que modificam apenas a semântica de barreira de uma operação, como descrito em sufixo de _nf (nenhuma circunda) anteriormente neste artigo.

Nome da Função

Protótipo de função

_interlockedbittestandreset

_interlockedbittestandreset char (unsigned long volátil *, longo)

_interlockedbittestandreset_acq

_interlockedbittestandreset_acq char (unsigned long volátil *, longo)

_interlockedbittestandreset_nf

_interlockedbittestandreset_nf char (unsigned long volátil *, longo)

_interlockedbittestandreset_rel

_interlockedbittestandreset_rel char (unsigned long volátil *, longo)

_interlockedbittestandset

_interlockedbittestandset char (unsigned long volátil *, longo)

_interlockedbittestandset_acq

_interlockedbittestandset_acq char (unsigned long volátil *, longo)

_interlockedbittestandset_nf

_interlockedbittestandset_nf char (unsigned long volátil *, longo)

_interlockedbittestandset_rel

_interlockedbittestandset_rel char (unsigned long volátil *, longo)

[NÉON]

Consulte também

Referência

Intrínsecos do compilador

Outros recursos

Referência de montador de ARM

Referência de linguagem C++