Používání operátorů v blocích __asm
Specifické pro Microsoft
__asm C nebo C++ specifické operátory, nelze použít jako blok << operátor.Však provozovatelé sdílen C a MASM, jako * provozovatele, jsou interpretovány jako symbolické operátory.Například mimo __asm blok, hranaté závorky ([]) jsou interpretovány jako ohraničení dolní indexy polí, která C automaticky přizpůsobí velikost prvku v poli.Uvnitř __asm bloku, které jsou považovány za operátor index MASM, která dává posun bez měřítka bajtů z datového objektu nebo popisek (nikoli pouze pole).Následující kód ilustruje rozdíl:
int array[10];
__asm mov array[6], bx ; Store BX at array+6 (not scaled)
array[6] = 0; /* Store 0 at array+24 (scaled) */
První odkaz na array nezmění, ale druhá je.Všimněte si, že můžete použít typu operátor k dosažení změny velikosti podle konstanty.Například následující příkazy jsou rovnocenné:
__asm mov array[6 * TYPE int], 0 ; Store 0 at array + 24
array[6] = 0; /* Store 0 at array + 24 */
Specificka produktu Microsoft END