Share via


MASM-Ausdrücke im Vergleich zu C++-Ausdrücken

Die wichtigsten Unterschiede zwischen der AUSWERTUNG von MASM-Ausdrücken und der Auswertung von C++-Ausdrücken sind wie folgt:

  • In einem MASM-Ausdruck ist der numerische Wert eines beliebigen Symbols die Speicheradresse. In einem C++-Ausdruck ist der numerische Wert einer Variablen ihr tatsächlicher Wert, nicht ihre Adresse. Datenstrukturen weisen keine numerischen Werte auf. Stattdessen werden sie als tatsächliche Strukturen behandelt, und Sie müssen sie entsprechend verwenden. Der Wert eines Funktionsnamens oder eines anderen Einstiegspunkts ist die Speicheradresse und wird als Funktionszeiger behandelt. Wenn Sie ein Symbol verwenden, das nicht einem C++-Datentyp entspricht (z. B. ein nicht geänderter Modulname), tritt ein Syntaxfehler auf.

  • Die MASM-Ausdrucksauswertung behandelt alle Zahlen als ULONG64 Werte. Der C++-Ausdrucksauswerter wandelt Zahlen in ULONG64 um und behält Die Typinformationen aller Datentypen bei.

  • Mit der MASM-Ausdrucksauswertung können Sie einen beliebigen Operator zusammen mit einer beliebigen Zahl verwenden. Die C++-Ausdrucksauswertung generiert einen Fehler, wenn Sie einen Operator zusammen mit einem falschen Datentyp verwenden.

  • In der MASM-Ausdrucksauswertung wird die gesamte Arithmetik wörtlich ausgeführt. In der C++-Ausdrucksauswertung wird die Zeigerarithmetik ordnungsgemäß skaliert und ist bei Unangemessenem nicht zulässig.

  • Ein MASM-Ausdruck kann zwei Unterstriche ( __ ) oder zwei Doppelpunkte ( :: ) verwenden, um Member einer Klasse anzugeben. Die C++-Ausdrucksauswertung verwendet nur die Zweipunktsyntax. Debuggerausgabe verwendet immer zwei Doppelpunkte.

  • In einem MASM-Ausdruck sollten Sie ein at-Zeichen (@) vor allen mit Ausnahme der gängigsten Register hinzufügen. Wenn Sie dies bei Vorzeichen weglassen, kann der Registername als hexadezimale Zahl oder als Symbol interpretiert werden. In einem C++-Ausdruck ist dieses Präfix für alle Register erforderlich.

  • MASM-Ausdrücke können Verweise auf Quellzeilen enthalten. Diese Verweise sind durch schwere Akzente ( ` ) gekennzeichnet. Sie können in einem C++-Ausdruck nicht auf Quellzeilennummern verweisen.

Weitere Informationen

MASM-Nummern und -Operatoren

C++-Nummern und -Operatoren

Beispiele für gemischte Ausdrücke

Zeichenerweiterung