Partilhar via


Usando operadores em blocos __asm

Específico da Microsoft

Um bloco de __asm não pode usar os operadores específicos de 2.0 C ou C++, como o operador de << . No entanto, operadores compartilhados por C e 2.0 por MASM, como * o operador, é interpretado como operadores de linguagem assembly. Por exemplo, fora de um bloco de __asm , os colchetes ([ ]) são interpretados como incluir os subscritos de matriz, que C dimensionar automaticamente ao tamanho de um elemento na matriz. Dentro de um bloco de __asm , são consultados como o operador do índice de MASM, o que gerencie um unscaled deslocamento de bytes de qualquer objeto de dados ou 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 é escalonada, mas a segunda é. Observe que você pode usar o operador de TIPO para obter a escala com base em uma constante. Por exemplo, as instruções seguintes são equivalentes:

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

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

FINALIZAR Específico da Microsoft

Consulte também

Referência

Usando C ou C++ em blocos __asm