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