Utilizzando gli operatori in blocchi di __asm

Specifici di Microsoft

__asm il blocco non è possibile utilizzare gli operatori specifici di C++ o c#, Ad esempio << operatore.Tuttavia, gli operatori condivisi da C# e da MASM, come l'operatore *, viene interpretato come operatori in linguaggio assembly.Ad esempio, all'esterno di l __asm blocco, parentesi quadre ( []) vengono interpretati come tipo di indici di matrice, che C# viene ridimensionato automaticamente alla dimensione di un elemento della matrice.In __asm blocco, il chiamato mentre l'operatore di indice di MASM, che produce un offset di byte non ridimensionata da qualsiasi oggetto dati o etichetta (non solo una matrice).Il codice seguente viene illustrata la differenza:

int array[10];

__asm mov array[6], bx ;  Store BX at array+6 (not scaled)

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

il primo riferimento a array non viene ridimensionato, mentre il secondo è.Si noti che è possibile utilizzare TYPE operatore per ottenere scala basato su una costante.Ad esempio, le istruzioni seguenti sono equivalenti:

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

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

Microsoft FINALE specifico

Vedere anche

Riferimenti

Utilizzando c o C++ in blocchi di __asm