Sdílet prostřednictvím


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

Viz také

Referenční dokumentace

Používání jazyka C nebo C++ v blocích __asm