Kifejezések kiértékelése

A hibakereső két különböző kifejezést ismer: MASM-kifejezéseket és C++ kifejezéseket.

A súgódokumentációban szereplő példákban Microsoft Macro Assembler (MASM) kifejezéseket használunk, kivéve, ha másként van feltüntetve. A MASM-kifejezésekben a rendszer minden szimbólumot címként kezel.

A C++ kifejezések megegyeznek a tényleges C++ kódban használt kifejezésekkel. Ezekben a kifejezésekben a szimbólumok a megfelelő adattípusok.

Ha minden szintaxist használnak

Az alapértelmezett kifejezésértékelőt az alábbi módok egyikével választhatja ki:

Ha nem használja az előző módszerek egyikét, a hibakereső a MASM-kifejezésértékelőt használja.

Ha a hibakereső állapot módosítása nélkül szeretne kiértékelni egy kifejezést, használhatja a ? (Kifejezés kiértékelése) parancs.

Az összes parancs és hibakeresési információ ablaka az alapértelmezett kifejezésértékelőn keresztül értelmezi az argumentumokat, a következő kivételekkel:

  • A ?? (C++ kifejezés kiértékelése) parancs mindig a C++ kifejezésértékelőt használja.

  • A Figyelő ablak mindig a C++ kifejezésértékelőt használja.

  • A Helyiek ablak mindig a C++ kifejezésértékelőt használja.

  • Egyes bővítményparancsok mindig a MASM-kifejezésértékelőt használják (más bővítményparancsok pedig csak numerikus argumentumokat fogadnak el a teljes kifejezések helyett).

  • Ha egy kifejezés bármely része zárójelben van, és a kifejezés elé két jelet (@@) szúr be, a kifejezést a kifejezés kiértékelője értékeli ki, amely ebben az esetben általában nem lenne használva.

A két jel (@@) lehetővé teszi, hogy két különböző kiértékelőt használjon egyetlen parancs különböző paramétereihez. Lehetővé teszi a hosszú kifejezések különböző részeinek kiértékelését is különböző módszerekkel. A kettőt a táblákba ágyazhatja. Minden alkalommal, amikor a két '@' jel megjelenik, átvált a másik kifejezésértékelőre.

Figyelmeztetés A C++ kifejezésszintaxis jól használható struktúrák és változók manipulálására, de nem alkalmas elemzőként a hibakereső parancsok paramétereihez. Ha hibakereső parancsokat használ általános célokra, vagy hibakereső bővítményeket használ, a MASM-kifejezés szintaxisát kell alapértelmezett kifejezésértékelőként beállítania. Ha egy adott paraméterrel kell rendelkeznie, használja a C++ kifejezés szintaxisát, használja a kettő a jelnél (@@) szintaxist.

A két különböző kifejezéstípusról további információt a Numerikus kifejezés szintaxisa című témakörben talál.

Számok a kifejezésekben

A MASM-kifejezésekben lévő számok az aktuális radix alapján vannak értelmezve. Az n (Számbázis beállítása) paranccsal az alapértelmezett radix értéke 16, 10 vagy 8 lehet. Minden előtag nélküli szám ebben az alapban lesz értelmezve. Az alapértelmezett radix felülírható a 0x előtag (hexadecimális), a 0n előtag (decimális), a 0t előtag (oktális) vagy a 0y előtag (bináris) megadásával.

A C++ kifejezésekben lévő számok tizedes törtként vannak értelmezve, hacsak nem ad meg másként. Hexadecimális egész szám megadásához adja hozzá a szám elé a 0x értéket . Oktális egész szám megadásához adjon hozzá 0 -t (nulla) a szám elé. (A hibakereső kimenetében azonban néha a 0n tizedes előtagot használják.)

Ha egyszerre több alapban szeretne megjeleníteni egy számot, használja a .formats (Show Number Formats) parancsot.

Szimbólumok a kifejezésekben

A két kifejezéstípus eltérően értelmezi a szimbólumokat:

  • A MASM-kifejezésekben a rendszer minden szimbólumot címként értelmez. Attól függően, hogy mire utal a szimbólum, ez a cím egy globális változó, helyi változó, függvény, szegmens, modul vagy bármely más felismert címke címe.

  • A C++ kifejezésekben a rendszer minden szimbólumot a típusának megfelelően értelmez. Attól függően, hogy a szimbólum mire utal, egész számként, adatszerkezetként, függvénymutatóként vagy bármilyen más adattípusként értelmezhető. A C++ adattípusnak (például nem módosított modulnévnek) nem megfelelő szimbólum szintaxishibát okoz.

Ha egy szimbólum nem egyértelmű, akkor a modul nevével és felkiáltójellel ( ! ) kell megelőzni. Ha a szimbólum neve hexadecimális számként értelmezhető, akkor a modul nevével és felkiáltójelével ( ! ) vagy csak felkiáltójellel előzheti meg. Annak megadásához, hogy egy szimbólum helyinek legyen szánva, hagyja ki a modul nevét, és a szimbólum neve előtt adjon meg egy dollárjelet és egy felkiáltójelet ( $! ). A szimbólumok értelmezéséről további információt a Szimbólumszintaxis és a Szimbólumegyezés című témakörben talál.

Operátorok a kifejezésekben

Minden kifejezéstípus eltérő operátorgyűjteményt használ.

A MASM-kifejezésekben használható operátorokról és azok elsőbbségi szabályairól további információt a MASM-számok és -operátorok című témakörben talál.

A C++ kifejezésekben használható operátorokról és azok elsőbbségi szabályairól további információt a C++ Számok és operátorok című témakörben talál.

Ne feledje, hogy a MASM-műveletek mindig bájtalapúak, a C++ műveletek pedig C++ típusú szabályokat követnek (beleértve a mutató aritmetikai skálázását is).

Néhány példa a különböző szintaxisokra: Vegyes kifejezési példák.