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