Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
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