Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Sezione specifica Microsoft
Un __asm blocco non può usare operatori specifici C o C++, ad esempio l'operatore << . Tuttavia, gli operatori condivisi da C e MASM, ad esempio l'operatore * , vengono interpretati come operatori del linguaggio assembly. Ad esempio, all'esterno di un __asm blocco, le parentesi quadre ([ ]) vengono interpretate come pedice di matrice che C ridimensiona automaticamente le dimensioni di un elemento nella matrice. All'interno di un blocco __asm, vengono interpretate come operatore di indice di MASM, il che genera un offset dei byte non ridimensionato da qualsiasi oggetto dati o etichetta (non solo da una matrice). Nel codice riportato di seguito 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 è ridimensionato, mentre il secondo lo è. Si noti che è possibile usare l'operatore TYPE per ottenere il ridimensionamento in base a 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 */
Fine sezione specifica Microsoft