Sdílet prostřednictvím


Používání operátorů v blocích __asm

Specifické pro Microsoft

Blok __asm nemůže používat specifické operátory jazyka C nebo C++, jako je například << operátor. Operátory sdílené jazykem C a MASM, jako je například operátor *, jsou však interpretovány jako operátory jazyka sestavení. Například mimo __asm blok jsou hranaté závorky ([ ]) interpretovány jako uzavřené dolní indexy pole, které jazyk C automaticky škáluje na velikost prvku v matici. Uvnitř bloku se považují za operátor indexu MASM, který poskytuje posun bez škálování bajtů od libovolného datového __asm objektu nebo popisku (nejen pole). Rozdíl znázorňuje následující kód:

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 není škálován, ale druhý je. Všimněte si, že pomocí operátoru TYPE můžete dosáhnout škálování na základě konstanty. Například následující příkazy jsou ekvivalentní:

__asm mov array[6 * TYPE int], 0 ; Store 0 at array + 24

array[6] = 0;                   /* Store 0 at array + 24 */

END Microsoft Specific

Viz také

Použití jazyka C nebo C++ v blocích __asm