Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Microsoft-specifik
Ett __asm block kan inte använda C- eller C++-specifika operatorer, till exempel operatorn << . Operatorer som delas av C och MASM, till exempel *-operatorn, tolkas dock som monteringsspråkoperatorer. Utanför ett __asm block tolkas till exempel hakparenteser ([ ]) som omslutna matrisunderskrifter, som C automatiskt skalar till storleken på ett element i matrisen. I ett __asm block ses de som MASM-indexoperator, vilket ger en oskalad byteförskjutning från alla dataobjekt eller etiketter (inte bara en matris). Följande kod illustrerar skillnaden:
int array[10];
__asm mov array[6], bx ; Store BX at array+6 (not scaled)
array[6] = 0; /* Store 0 at array+24 (scaled) */
Den första referensen till array skalas inte, men den andra är. Observera att du kan använda type-operatorn för att uppnå skalning baserat på en konstant. Till exempel är följande uttalanden likvärdiga:
__asm mov array[6 * TYPE int], 0 ; Store 0 at array + 24
array[6] = 0; /* Store 0 at array + 24 */
Avsluta Microsoft Specifik