Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
Específico da Microsoft
Como um rótulo C ou C++ comum, um rótulo em um __asm bloco tem escopo em toda a função em que é definido (não apenas no bloco). Tanto as instruções de montagem goto quanto as declarações podem desviar-se para rótulos dentro ou fora do bloco __asm.
As etiquetas definidas nos blocos __asm não diferenciam maiúsculas de minúsculas; tanto as instruções goto como as instruções de montagem podem referir-se a essas etiquetas sem considerar o uso de maiúsculas e minúsculas. Os rótulos C e C++ diferenciam maiúsculas de minúsculas somente quando usados em instruções goto. As instruções de montagem podem saltar para um rótulo C ou C++ sem considerar maiúsculas e minúsculas.
O código a seguir mostra todas as permutações:
void func( void )
{
goto C_Dest; /* Legal: correct case */
goto c_dest; /* Error: incorrect case */
goto A_Dest; /* Legal: correct case */
goto a_dest; /* Legal: incorrect case */
__asm
{
jmp C_Dest ; Legal: correct case
jmp c_dest ; Legal: incorrect case
jmp A_Dest ; Legal: correct case
jmp a_dest ; Legal: incorrect case
a_dest: ; __asm label
}
C_Dest: /* C label */
return;
}
int main()
{
}
Não use nomes de funções da biblioteca C como rótulos em __asm blocos. Por exemplo, você pode ficar tentado a usar exit como um rótulo, da seguinte maneira:
; BAD TECHNIQUE: using library function name as label
jne exit
.
.
.
exit:
; More __asm code follows
Como exit é o nome de uma função de biblioteca C, esse código pode causar um salto para a função exit em vez de para o local desejado.
Como nos programas MASM, o símbolo do dólar ($) serve como o contador de localização atual. É uma etiqueta para a instrução que está a ser montada atualmente. Nos blocos __asm, a sua principal utilização é fazer saltos condicionais longos:
jne $+5 ; next instruction is 5 bytes long
jmp farlabel ; $+5
.
.
.
farlabel:
END Específico da Microsoft