Freigeben über


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

Die wichtigsten Unterschiede zwischen der MASM-Ausdrucksauswertung und der 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 entspricht (z. B. ein unveränderter Modulname), tritt ein Syntaxfehler auf.

  • Die MASM-Ausdrucksauswertung behandelt alle Zahlen als ULONG64-Werte. Die C++-Ausdrucksauswertung wandelt Zahlen in ULONG64 um und behält 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 werden alle arithmetischen Operationen wörtlich ausgeführt. In der C++-Ausdrucksauswertung wird die Zeigerarithmetik richtig skaliert und nicht zugelassen, wenn sie ungeeignet ist.

  • Ein MASM-Ausdruck kann zwei Unterstriche ( __ ) oder zwei Doppelpunkte ( :: ) verwenden, um Mitglieder einer Klasse anzugeben. Die C++-Ausdrucksauswertung verwendet nur die Zwei-Doppelpunkt-Syntax. Die Ausgabe des Debuggers verwendet immer zwei Doppelpunkte.

  • In einem MASM-Ausdruck sollten Sie vor allen Registern außer den gängigsten ein „at“-Zeichen (@) hinzufügen. Wenn Sie dieses „at“-Zeichen weglassen, kann der Registername als Hexadezimalzahl 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 Referenzen werden durch Gravis-Zeichen ( ` ) 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