Aracılığıyla paylaş


Satır içi derleme etiketlerini atlama

Microsoft özel

Bir sıradan c ya da C++ etiketi, bir etiket gibi bir __asm blok tanımlanmış (sadece bloğunda) işlevi boyunca kapsam vardır.Her iki derleme yönergeleri ve goto ifadeleri etiketleri içine veya dışına atlama __asm blok.

Tanımlanan etiketler __asm blokları büyük/küçük harfe duyarlı; değildir her ikisi de goto ifadeler ve derleme yönergeleri için servis talebi olmadan bu etiketleri başvurabilirsiniz.C ve C++ etiketleri büyük yalnızca tarafından kullanıldığında önemli goto deyimleri.Derleme yönergeleri için servis talebi olmadan bir c veya C++ etiket atlayabilirsiniz.

Aşağıdaki kod, PERMÜTASYON gösterir:

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()
{
}

c Kitaplığı işlev adlarını etiket olarak kullanma __asm engeller.Örneğin, kullanma eğiliminde olabilir exit aşağıdaki gibi bir etiket olarak:

; BAD TECHNIQUE: using library function name as label
jne exit
   .
   .
   .
exit:
   ; More __asm code follows

Çünkü çıkmak adı bir c Kitaplığı işlevi, bu kod için bir atlama neden olabilir çıkmak istediğiniz yere işlevini yerine.

Olarak programlarda masm dolar simgesi ($) geçerli konum sayaç olarak işlev görür.Şu anda bir araya getirilen yönerge için bir etikettir.De __asm blokları, ana kullanımı ise uzun koşullu atlar yapmak için:

jne $+5 ; next instruction is 5 bytes long
jmp farlabel
; $+5
   .
   .
   .
farlabel:

SON Microsoft özel

Ayrıca bkz.

Başvuru

Satır içi Assembler