Dela via


MASM-uttryck jämfört med C++-uttryck

De viktigaste skillnaderna mellan utvärdering av MASM-uttryck och utvärdering av C++-uttryck är följande:

  • I ett MASM-uttryck är det numeriska värdet för en symbol dess minnesadress. I ett C++-uttryck är det numeriska värdet för en variabel dess faktiska värde, inte dess adress. Datastrukturer har inte numeriska värden. I stället behandlas de som faktiska strukturer och du måste använda dem i enlighet med detta. Värdet för ett funktionsnamn eller någon annan startpunkt är minnesadressen och behandlas som en funktionspekare. Om du använder en symbol som inte motsvarar en C++-datatyp (till exempel ett omodifierat modulnamn) uppstår ett syntaxfel.

  • MASM-uttrycksutvärderingen behandlar alla tal som ULONG64 värden. C++-uttrycksutvärderingen omvandlar tal till ULONG64 och bevarar typinformation för alla datatyper.

  • Med MASM-uttrycksutvärderaren kan du använda valfri operator tillsammans med valfritt tal. C++-uttrycksutvärderingen genererar ett fel om du använder en operator tillsammans med en felaktig datatyp.

  • I MASM-uttrycksutvärderingen utförs all aritmetik bokstavligen. I C++-uttrycksvärderaren skalas pekarearitmetiken korrekt och är inte tillåten när det är olämpligt.

  • Ett MASM-uttryck kan använda två understreck ( __ ) eller två kolon ( :: ) för att ange medlemmar i en klass. C++-uttrycksutvärderingen använder endast syntaxen för två kolon. Felsökningsprogramutdata använder alltid två kolon.

  • I ett MASM-uttryck bör du lägga till ett vidtecken (@) före alla utom de vanligaste registreringarna. Om du utelämnar detta vid tecknet kan registernamnet tolkas som ett hexadecimalt nummer eller som en symbol. I ett C++-uttryck krävs det här prefixet för alla register.

  • MASM-uttryck kan innehålla referenser till källrader. Dessa referenser anges med allvarliga accenter ( ` ). Du kan inte referera till källradsnummer i ett C++-uttryck.

Se även

MASM-nummer och operatorer

C++-tal och operatorer

Exempel på blandade uttryck

Signalförlängning