|
|
1.1 root 1: /* Copyright (c) 1979 Regents of the University of California */
2:
3: /* static char sccsid[] = "@(#)pcops.h 1.1 8/27/80"; */
4:
5: /*
6: * tree node operators
7: */
8: #define P2UNDEFINED 1
9: #define P2NAME 2
10: #define P2STRING 3
11: #define P2ICON 4
12: #define P2FCON 5
13: #define P2PLUS 6
14: #define P2MINUS 8 /* also unary == P2NEG */
15: #define P2MUL 11 /* also unary == P2INDIRECT */
16: #define P2AND 14 /* also unary */
17: #define P2OR 17
18: #define P2ER 19
19: #define P2QUEST 21
20: #define P2COLON 22
21: #define P2ANDAND 23
22: #define P2OROR 24
23: /*
24: * yacc operator classes, reserved words, little symbols, etc.
25: * operators 25 .. 57 not used, except 56
26: */
27: #define P2LISTOP 56
28: #define P2ASSIGN 58
29: #define P2COMOP 59
30: #define P2DIV 60
31: #define P2MOD 62
32: #define P2LS 64
33: #define P2RS 66
34: #define P2DOT 68
35: #define P2STREF 69
36: #define P2CALL 70 /* also unary */
37: #define P2FORTCALL 73 /* also unary */
38: #define P2NOT 76
39: #define P2COMPL 77
40: #define P2INCR 78
41: #define P2DECR 79
42: #define P2EQ 80
43: #define P2NE 81
44: #define P2LE 82
45: #define P2LT 83
46: #define P2GE 84
47: #define P2GT 85
48: #define P2ULE 86
49: #define P2ULT 87
50: #define P2UGE 88
51: #define P2UGT 89
52: #define P2SETBIT 90
53: #define P2TESTBIT 91
54: #define P2RESETBIT 92
55: #define P2ARS 93
56: #define P2REG 94
57: #define P2OREG 95
58: #define P2CCODES 96
59: #define P2FREE 97
60: #define P2STASG 98
61: #define P2STARG 99
62: #define P2STCALL 100 /* also unary */
63:
64: /*
65: * some conversion operators
66: */
67: #define P2FLD 103
68: #define P2SCONV 104
69: #define P2PCONV 105
70: #define P2PMCONV 106
71: #define P2PVCONV 107
72:
73: /*
74: * special node operators, used for special contexts
75: */
76: #define P2FORCE 108
77: #define P2CBRANCH 109
78: #define P2INIT 110
79: #define P2CAST 111
80:
81: /*
82: * prefix unary operator modifier
83: */
84: #define P2ASG 1+
85: #define P2UNARY 2+
86:
87: /*
88: * these borrowed from /usr/src/cmd/mip/fort.c
89: * to use the binary interface.
90: * only FTEXT, FEXPR, FLBRAC, FRBRAC, and FEOF are used
91: */
92: #define P2FTEXT 200
93: #define P2FEXPR 201
94: #define P2FLBRAC 203
95: #define P2FRBRAC 204
96: #define P2FEOF 205
97:
98: /*
99: * type names
100: */
101: #define P2UNDEF 0
102: #define P2FARG 1
103: #define P2CHAR 2
104: #define P2SHORT 3
105: #define P2INT 4 /* this is also used for booleans */
106: #define P2LONG 5 /* don't use these, the second pass chokes */
107: #define P2FLOAT 6
108: #define P2DOUBLE 7
109: #define P2STRTY 8
110: #define P2UNIONTY 9
111: #define P2ENUMTY 10
112: #define P2MOETY 11
113: #define P2UCHAR 12
114: #define P2USHORT 13
115: #define P2UNSIGNED 14
116: #define P2ULONG 15
117:
118: /*
119: * type modifiers
120: */
121: #define P2PTR 020
122: #define P2FTN 040
123: #define P2ARY 060
124:
125: /*
126: * see the comment for p2type for an explanation of c type words
127: */
128: #define P2BASETYPE 017
129: #define P2TYPESHIFT 2
130:
131: /*
132: * add a most significant type modifier, m, to a type, t
133: */
134: #define ADDTYPE( t,m ) ( ( ( ( t ) & ~P2BASETYPE ) << P2TYPESHIFT ) \
135: | ( m ) \
136: | ( ( t ) & P2BASETYPE ) )
137:
138: /*
139: * the runtime framepointer and argumentpointer registers
140: */
141: #define P2FP 13
142: #define P2FPNAME "fp"
143: #define P2AP 12
144: #define P2APNAME "ap"
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.