xref: /plan9/sys/src/cmd/kc/k.out.h (revision 375daca8932d0755549a5f8e4d068a24a49927d4)
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 	ANAME,
159 	ANOP,
160 	AOR,
161 	AORCC,
162 	AORN,
163 	AORNCC,
164 	ARESTORE,
165 	ARETT,
166 	ARETURN,
167 	ASAVE,
168 	ASLL,
169 	ASRA,
170 	ASRL,
171 	ASUB,
172 	ASUBCC,
173 	ASUBX,
174 	ASUBXCC,
175 	ASWAP,
176 	ATA,
177 	ATADDCC,
178 	ATADDCCTV,
179 	ATAS,
180 	ATCC,
181 	ATCS,
182 	ATE,
183 	ATEXT,
184 	ATG,
185 	ATGE,
186 	ATGU,
187 	ATL,
188 	ATLE,
189 	ATLEU,
190 	ATN,
191 	ATNE,
192 	ATNEG,
193 	ATPOS,
194 	ATSUBCC,
195 	ATSUBCCTV,
196 	ATVC,
197 	ATVS,
198 	AUNIMP,
199 	AWORD,
200 	AXNOR,
201 	AXNORCC,
202 	AXOR,
203 	AXORCC,
204 	AEND,
205 	ADYNT,
206 	AINIT,
207 	ASIGNAME,
208 	ALAST
209 };
210 
211 /* type/name */
212 enum
213 {
214 	D_GOK	= 0,
215 	D_NONE,
216 
217 /* name */
218 	D_EXTERN,
219 	D_STATIC,
220 	D_AUTO,
221 	D_PARAM,
222 
223 /* type */
224 	D_BRANCH,
225 	D_OREG,
226 	D_ASI,
227 	D_CONST,
228 	D_FCONST,
229 	D_SCONST,
230 	D_REG,
231 	D_FREG,
232 	D_CREG,
233 	D_PREG,
234 	D_FILE,
235 	D_FILE1,
236 
237 /* reg names iff type is D_PREG */
238 	D_CPQ	= 0,
239 	D_CSR,
240 	D_FPQ,
241 	D_FSR,
242 	D_PSR,
243 	D_TBR,
244 	D_WIM,
245 	D_Y
246 };
247 
248 /*
249  * this is the ranlib header
250  */
251 #define	SYMDEF	"__.SYMDEF"
252 
253 /*
254  * this is the simulated IEEE floating point
255  */
256 typedef	struct	ieee	Ieee;
257 struct	ieee
258 {
259 	long	l;	/* contains ls-man	0xffffffff */
260 	long	h;	/* contains sign	0x80000000
261 				    exp		0x7ff00000
262 				    ms-man	0x000fffff */
263 };
264