Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Específico da Microsoft
Um __asm bloco não pode usar operadores específicos de C ou C++, como o << operador. No entanto, os operadores compartilhados por C e MASM, como o operador *, são interpretados como operadores de linguagem de montagem. Por exemplo, fora do __asm bloco, os colchetes ([ ]) são interpretados como subscritos de matriz, que o C ajusta automaticamente para o tamanho de um elemento na matriz. Dentro de um __asm bloco, eles são vistos como o operador de índice MASM, que produz um deslocamento de byte não dimensionado 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 é dimensionada, mas a segunda é. Observe que você pode usar o operador TYPE para obter dimensionamento com base em uma constante. Por exemplo, as seguintes declarações são equivalentes:
__asm mov array[6 * TYPE int], 0 ; Store 0 at array + 24
array[6] = 0; /* Store 0 at array + 24 */
END Específico da Microsoft