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