Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Microsoft-specifieke
Net als een gewoon C- of C++-label heeft een label in een __asm blok een bereik in de functie waarin het is gedefinieerd (niet alleen in het blok). Zowel montage-instructies als goto instructies kunnen naar labels binnen of buiten het __asm blok springen.
Labels die in __asm blokken zijn gedefinieerd, zijn niet hoofdlettergevoelig; zowel goto instructies als assembly-instructies kunnen verwijzen naar deze labels, zonder rekening te houden met hoofdletters. C/C++-labels zijn alleen hoofdlettergevoelig wanneer ze worden gebruikt in goto statements. Assembly-instructies kunnen naar een C- of C++-label gaan, zonder rekening te houden met hoofdletters en kleine letters.
De volgende code toont alle permutaties:
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()
{
}
Gebruik geen namen van C-bibliotheekfuncties als labels in __asm blokken. U bent bijvoorbeeld geneigd om als label te gebruiken exit , als volgt:
; BAD TECHNIQUE: using library function name as label
jne exit
.
.
.
exit:
; More __asm code follows
Omdat exit de naam is van een C-bibliotheekfunctie, kan deze code een sprong naar de afsluitfunctie veroorzaken in plaats van naar de gewenste locatie.
Net als in MASM-programma's dient het dollarsymbool ($) als de huidige locatieteller. Het is een label voor de instructie die momenteel wordt samengesteld. In __asm blokken is het belangrijkste gebruik ervan om lange voorwaardelijke sprongen te maken:
jne $+5 ; next instruction is 5 bytes long
jmp farlabel ; $+5
.
.
.
farlabel:
Microsoft-specifieke beƫindigen