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