windows-nt/Source/XPSP1/NT/sdktools/masm/asmexpr.h
2020-09-26 16:20:57 +08:00

59 lines
1.7 KiB
C

/* asmexpr.h -- include file for microsoft 80x86 assembler
**
** microsoft (r) macro assembler
** copyright (c) microsoft corp 1986. all rights reserved
**
** randy nevin
*/
/* Types of values desired by operators in evaltop */
#define CALLABS 0 /* unary or binary with null segment */
#define CLSIZE 1 /* unary or binary with (left) size */
#define CSAME 2 /* binary in same segment and not external */
#define CDATA 3 /* unary and data associated */
#define CCODE 4 /* unary and code associated */
#define CREC 5 /* unary record field or name */
#define CSEG 6 /* unary and value must have segment */
#define CLSEG 7 /* binary with left value segment assoc. */
#define CSIZE 8 /* unary with size */
#define CVAR 9 /* unary constant or data */
#define CONEABS 10 /* binary with one value constant */
#define CSAMABS 11 /* binary in same segment or 2nd constant */
/** parser activation record
* This structure is equivalent to the upper frame variables
* of the outer Pascal procedure
*/
struct ar {
DSCREC *lastitem;
DSCREC *curresult;
SCHAR *expscan;
USHORT index;
OFFSET base;
USHORT rstype;
USHORT vmode;
UCHAR segovr;
UCHAR evalop;
SCHAR bracklevel;
SCHAR parenlevel;
UCHAR lastprec;
UCHAR curprec;
UCHAR linktype;
UCHAR exprdone;
UCHAR unaryflag;
UCHAR addplusflag;
};
UCHAR PASCAL CODESIZE evalalpha PARMS((struct ar *));
VOID PASCAL CODESIZE evaluate PARMS((struct ar *));
VOID PASCAL CODESIZE exprop PARMS((struct ar *));
VOID PASCAL CODESIZE findsegment PARMS(( UCHAR , struct ar *));
char PASCAL CODESIZE getitem PARMS((struct ar *));
UCHAR PASCAL CODESIZE popoperator PARMS((struct ar *));
DSCREC * PASCAL CODESIZE popvalue PARMS((struct ar *));
VOID PASCAL CODESIZE valerror PARMS((struct ar *));