Condividi tramite


Espressioni MASM e espressioni C++

Di seguito sono riportate le differenze più significative tra la valutazione delle espressioni MASM e la valutazione delle espressioni C++:

  • In un'espressione MASM il valore numerico di qualsiasi simbolo è il relativo indirizzo di memoria. In un'espressione C++ il valore numerico di una variabile è il valore effettivo, non il relativo indirizzo. Le strutture di dati non hanno valori numerici. Al contrario, vengono trattati come strutture effettive ed è necessario usarle di conseguenza. Il valore di un nome di funzione o qualsiasi altro punto di ingresso è l'indirizzo di memoria e viene considerato come puntatore a funzione. Se si usa un simbolo che non corrisponde a un tipo di dati C++ (ad esempio un nome di modulo non modificato), si verifica un errore di sintassi.

  • L'analizzatore di espressioni MASM considera tutti i numeri come valori ULONG64. L'analizzatore di espressioni C++ esegue il cast dei numeri a ULONG64 e mantiene le informazioni sul tipo di tutti i tipi di dati.

  • L'analizzatore di espressioni MASM consente di usare qualsiasi operatore insieme a qualsiasi numero. L'analizzatore di espressioni C++ genera un errore se si usa un operatore insieme a un tipo di dati non corretto.

  • Nell'analizzatore di espressioni MASM, tutte le operazioni aritmetiche vengono eseguite letteralmente. Nell'analizzatore di espressioni C++, l'aritmetica del puntatore viene ridimensionata correttamente e non è consentita quando non è appropriata.

  • Un'espressione MASM può usare due caratteri di sottolineatura ( __ ) o due punti ( :: ) per indicare i membri di una classe. L'analizzatore di espressioni C++ usa solo la sintassi a due due punti. L'output del debugger usa sempre due punti.

  • In un'espressione MASM è necessario aggiungere un simbolo di firma (@) prima di tutti tranne i registri più comuni. Se si omette questo segno, il nome del registro potrebbe essere interpretato come numero esadecimale o come simbolo. In un'espressione C++ questo prefisso è necessario per tutti i registri.

  • Le espressioni MASM possono contenere riferimenti alle righe di origine. Questi riferimenti sono indicati da accenti gravi ( ` ). Non è possibile fare riferimento ai numeri di riga di origine in un'espressione C++.

Vedi anche

Operatori e numeri MASM

Numeri e operatori C++

Esempi di espressioni miste

Firma estensione