blob: e180b8547ef5c8610ea67264a8f05252e12f9dd7 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
/* 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 *));
|