Freigeben über


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

Die wichtigsten Unterschiede zwischen MASM-Ausdrucksauswertung und C++-Ausdrucksauswertung sind wie folgt:

  • In einem MASM-Ausdruck ist der numerische Wert eines Symbols die Speicheradresse. In einem C++-Ausdruck ist der numerische Wert einer Variablen der tatsächliche Wert, nicht die 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 keinem C++-Datentyp (z. B. einem nicht geänderten Modulnamen) entspricht, tritt ein Syntaxfehler auf.

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

  • Mit dem MASM-Ausdrucksauswerter können Sie einen beliebigen Operator zusammen mit einer beliebigen Zahl verwenden. Der C++-Ausdrucksauswert generiert einen Fehler, wenn Sie einen Operator zusammen mit einem falschen Datentyp verwenden.

  • Der MASM-Ausdrucksauswerter führt jede Arithmetik wortwörtlich aus. In der C++-Ausdrucksauswertung wird die Zeigerarithmetik ordnungsgemäß skaliert und ist nicht zulässig, wenn dies unangebracht ist.

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

  • In einem MASM-Ausdruck sollten Sie vor allen außer den am häufigsten verwendeten Registern ein At-Zeichen (@) hinzufügen. Wenn Sie dieses Zeichen weglassen, wird der Registername möglicherweise als hexadezimale Zahl oder als Symbol interpretiert. In einem C++-Ausdruck ist dieses Präfix für alle Register erforderlich.

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

Siehe auch

MASM-Nummern und -Operatoren

C++-Nummern und -Operatoren

Beispiele für gemischte Ausdrücke

Sign-Erweiterung