Sdílet prostřednictvím


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

Viz také

Referenční dokumentace

Vložený assembler