]> git.lizzy.rs Git - plan9front.git/blob - sys/src/cmd/kc/k.out.h
merge
[plan9front.git] / sys / src / cmd / kc / k.out.h
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 };