Subversion Repositories planix.SVN

Rev

Rev 2 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 - 1
#define	NSNAME	8
2
#define	NSYM	50
3
#define	NREG	32
4
#define NOPROF	(1<<0)
5
#define DUPOK	(1<<1)
6
 
7
enum
8
{
9
	REGZERO		= 0,	/* always zero */
10
	REGSP		= 1,	/* stack pointer */
11
	REGSB		= 2,	/* static pointer */
12
	REGSB1		= 3,	/* (possible) second static pointer */
13
	REGEXT		= 6,	/* first external register, grows-- */
14
	REGRET		= 7,	/* return register and first temp, grows++ */
15
	REGTMP		= 14,	/* used by the loader */
16
	REGLINK		= 15,	/* subroutine linkage */
17
	REGARG		= 7,	/* first arg passed in */
18
 
19
	FREGRET		= 0,
20
	FREGEXT		= 22,	/* first external register */
21
	FREGZERO	= 24,	/* both float and double */
22
	FREGHALF	= 26,	/* double */
23
	FREGONE		= 28,	/* double */
24
	FREGTWO		= 30	/* double */
25
/*
26
 * GENERAL:
27
 *
28
 * compiler allocates R7 up as temps
29
 * compiler allocates external registers R6 down
30
 * compiler allocates register variables F4-F22
31
 * compiler allocates external registers F22 down
32
 */
33
};
34
 
35
enum	as
36
{
37
	AXXX	= 0,
38
	AADD,
39
	AADDCC,
40
	AADDX,
41
	AADDXCC,
42
	AAND,
43
	AANDCC,
44
	AANDN,
45
	AANDNCC,
46
	ABA,
47
	ABCC,
48
	ABCS,
49
	ABE,
50
	ABG,
51
	ABGE,
52
	ABGU,
53
	ABL,
54
	ABLE,
55
	ABLEU,
56
	ABN,
57
	ABNE,
58
	ABNEG,
59
	ABPOS,
60
	ABVC,
61
	ABVS,
62
	ACB0,
63
	ACB01,
64
	ACB012,
65
	ACB013,
66
	ACB02,
67
	ACB023,
68
	ACB03,
69
	ACB1,
70
	ACB12,
71
	ACB123,
72
	ACB13,
73
	ACB2,
74
	ACB23,
75
	ACB3,
76
	ACBA,
77
	ACBN,
78
	ACMP,		/* pseudo op */
79
	ACPOP1,
80
	ACPOP2,
81
	ADATA,
82
	ADIV,
83
	ADIVL,
84
	AFABSD,		/* pseudo op */
85
	AFABSF,
86
	AFABSX,		/* pseudo op */
87
	AFADDD,
88
	AFADDF,
89
	AFADDX,
90
	AFBA,
91
	AFBE,
92
	AFBG,
93
	AFBGE,
94
	AFBL,
95
	AFBLE,
96
	AFBLG,
97
	AFBN,
98
	AFBNE,
99
	AFBO,
100
	AFBU,
101
	AFBUE,
102
	AFBUG,
103
	AFBUGE,
104
	AFBUL,
105
	AFBULE,
106
	AFCMPD,
107
	AFCMPED,
108
	AFCMPEF,
109
	AFCMPEX,
110
	AFCMPF,
111
	AFCMPX,
112
	AFDIVD,
113
	AFDIVF,
114
	AFDIVX,
115
	AFMOVD,		/* pseudo op */
116
	AFMOVDF,
117
	AFMOVDW,
118
	AFMOVDX,
119
	AFMOVF,
120
	AFMOVFD,
121
	AFMOVFW,
122
	AFMOVFX,
123
	AFMOVWD,
124
	AFMOVWF,
125
	AFMOVWX,
126
	AFMOVX,		/* pseudo op */
127
	AFMOVXD,
128
	AFMOVXF,
129
	AFMOVXW,
130
	AFMULD,
131
	AFMULF,
132
	AFMULX,
133
	AFNEGD,		/* pseudo op */
134
	AFNEGF,
135
	AFNEGX,		/* pseudo op */
136
	AFSQRTD,
137
	AFSQRTF,
138
	AFSQRTX,
139
	AFSUBD,
140
	AFSUBF,
141
	AFSUBX,
142
	AGLOBL,
143
	AGOK,
144
	AHISTORY,
145
	AIFLUSH,
146
	AJMPL,
147
	AJMP,
148
	AMOD,
149
	AMODL,
150
	AMOVB,
151
	AMOVBU,
152
	AMOVD,
153
	AMOVH,
154
	AMOVHU,
155
	AMOVW,
156
	AMUL,
157
	AMULSCC,
158
				AXXXdummy,		// to temporarily make ANAME/ASIGNAME different than .k's
159
	ANAME,
160
	ANOP,
161
	AOR,
162
	AORCC,
163
	AORN,
164
	AORNCC,
165
	ARESTORE,
166
	ARETT,
167
	ARETURN,
168
	ASAVE,
169
	ASLL,
170
	ASRA,
171
	ASRL,
172
	ASUB,
173
	ASUBCC,
174
	ASUBX,
175
	ASUBXCC,
176
	ASWAP,
177
	ATA,
178
	ATADDCC,
179
	ATADDCCTV,
180
	ATAS,
181
	ATCC,
182
	ATCS,
183
	ATE,
184
	ATEXT,
185
	ATG,
186
	ATGE,
187
	ATGU,
188
	ATL,
189
	ATLE,
190
	ATLEU,
191
	ATN,
192
	ATNE,
193
	ATNEG,
194
	ATPOS,
195
	ATSUBCC,
196
	ATSUBCCTV,
197
	ATVC,
198
	ATVS,
199
	AUNIMP,
200
	AWORD,
201
	AXNOR,
202
	AXNORCC,
203
	AXOR,
204
	AXORCC,
205
	AEND,
206
	ADYNT,
207
	AINIT,
208
	ASIGNAME,
209
	ALAST
210
};
211
 
212
/* type/name */
213
enum
214
{
215
	D_GOK	= 0,
216
	D_NONE,
217
 
218
/* name */
219
	D_EXTERN,
220
	D_STATIC,
221
	D_AUTO,
222
	D_PARAM,
223
 
224
/* type */
225
	D_BRANCH,
226
	D_OREG,
227
	D_ASI,
228
	D_CONST,
229
	D_FCONST,
230
	D_SCONST,
231
	D_REG,
232
	D_FREG,
233
	D_CREG,
234
	D_PREG,
235
	D_FILE,
236
	D_FILE1,
237
 
238
/* reg names iff type is D_PREG */
239
	D_CPQ	= 0,
240
	D_CSR,
241
	D_FPQ,
242
	D_FSR,
243
	D_PSR,
244
	D_TBR,
245
	D_WIM,
246
	D_Y
247
};
248
 
249
/*
250
 * this is the ranlib header
251
 */
252
#define	SYMDEF	"__.SYMDEF"
253
 
254
/*
255
 * this is the simulated IEEE floating point
256
 */
257
typedef	struct	ieee	Ieee;
258
struct	ieee
259
{
260
	long	l;	/* contains ls-man	0xffffffff */
261
	long	h;	/* contains sign	0x80000000
262
				    exp		0x7ff00000
263
				    ms-man	0x000fffff */
264
};