Partilhar via


Usando operadores em blocos de __asm

Específicos do Microsoft

Um __asm bloco não é possível usar operadores de c ou C++ específicas, como o << operador.No entanto, operadores compartilhados por c e MASM, como o * operador, são interpretados como operadores de linguagem assembler.Por exemplo, fora um __asm bloquear, colchetes ([]) são interpretados como delimitador subscritos da matriz, que c pode ser dimensionada automaticamente para o tamanho de um elemento na matriz.Dentro de um __asm block, que são vistos como o operador de índice MASM, que produz um deslocamento de byte fora de escala de qualquer objeto de dados ou o rótulo (não apenas uma matriz).O código a seguir ilustra a diferença:

int array[10];

__asm mov array[6], bx ;  Store BX at array+6 (not scaled)

array[6] = 0;         /* Store 0 at array+24 (scaled) */

A primeira referência a array não estiver em escala, mas o segundo é.Observe que você pode usar o tipo de operador para alcançar a escala com base em uma constante.Por exemplo, as instruções a seguir são equivalentes:

__asm mov array[6 * TYPE int], 0 ; Store 0 at array + 24

array[6] = 0;                   /* Store 0 at array + 24 */

Específicos do Microsoft final

Consulte também

Referência

Usando c ou C++ em blocos de __asm