Přechod na popisky ve vloženém sestavení
Specifické pro Microsoft
Jako obyčejný C nebo C++ popisek, v popisku __asm blok s rozsahem v rámci funkce, ve kterém je definován (nejen v bloku).I montáž a goto příkazy můžete přejít na štítky nebo mimo __asm blok.
Popisky, které jsou definovány v __asm bloky nejsou malá a velká písmena; obě goto příkazy a pokyny sestavení může odkazovat na tyto popisky bez ohledu na případu.C a C++ popisky se rozlišují pouze při použití goto příkazy.Montáž můžete přejít na štítku C nebo C++ bez ohledu na případu.
Následující kód ukazuje všechny permutací:
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()
{
}
Nepoužívejte názvy funkcí knihovny C jako popisky v __asm bloky.Například můžete svádět k použití exit jako popisek, takto:
; BAD TECHNIQUE: using library function name as label
jne exit
.
.
.
exit:
; More __asm code follows
Vzhledem k tomu, ukončení je název funkce knihovny C, tento kód může způsobit přechod ukončení funkci namísto do požadovaného umístění.
Stejně jako v MASM programy, symbol dolaru ($) slouží jako aktuální umístění čítače.Je popisek instrukce jsou smontovány.V __asm bloky, jeho hlavní použití je dlouhý podmíněné skoky:
jne $+5 ; next instruction is 5 bytes long
jmp farlabel
; $+5
.
.
.
farlabel:
Specificka produktu Microsoft END