Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Microsoft-specifieke
Een __asm blok kan geen specifieke C- of C++-operatoren gebruiken, zoals de << operator. Operators die worden gedeeld door C en MASM, zoals de operator *, worden echter geïnterpreteerd als operators in assemblytaal. Buiten een __asm blok worden vierkante haken ([ ]) bijvoorbeeld geïnterpreteerd als het insluiten van matrixsubscripts, die door C automatisch worden geschaald naar de grootte van een element in de matrix. Binnen een __asm blok worden ze gezien als de MASM-indexoperator, wat een ongeschaalde byte-offset oplevert van iedere gegevensobject of label (niet alleen een array). De volgende code illustreert het verschil:
int array[10];
__asm mov array[6], bx ; Store BX at array+6 (not scaled)
array[6] = 0; /* Store 0 at array+24 (scaled) */
De eerste verwijzing naar array is niet geschaald, maar de tweede wel. Houd er rekening mee dat u de operator TYPE kunt gebruiken om te schalen op basis van een constante. De volgende instructies zijn bijvoorbeeld gelijkwaardig:
__asm mov array[6 * TYPE int], 0 ; Store 0 at array + 24
array[6] = 0; /* Store 0 at array + 24 */
Microsoft-specifieke beëindigen