4 #include "../kc/k.out.h"
10 typedef struct Adr Adr;
11 typedef struct Sym Sym;
12 typedef struct Autom Auto;
13 typedef struct Prog Prog;
14 typedef struct Optab Optab;
18 #define TNAME (curtext&&curtext->from.sym?curtext->from.sym->name:noname)
39 #define offset u0.u0offset
40 #define sval u0.u0sval
41 #define ieee u0.u0ieee
43 #define autom u1.u1autom
103 MAXHIST = 20, /* limit of path elements for history symbols */
142 C_SCON, /* 13 bit signed */
143 C_UCON, /* low 10 bits 0 */
184 uchar obuf[MAXIO]; /* output buffer */
185 uchar ibuf[MAXIO]; /* input buffer */
193 EXTERN long HEADR; /* length of header */
194 EXTERN int HEADTYPE; /* type of header */
195 EXTERN long INITDAT; /* data location */
196 EXTERN long INITRND; /* data round above text location */
197 EXTERN long INITTEXT; /* text location */
198 EXTERN char* INITENTRY; /* entry point */
199 EXTERN long autosize;
205 EXTERN Auto* curauto;
206 EXTERN Auto* curhist;
208 EXTERN Prog* curtext;
210 EXTERN Prog* prog_mul;
211 EXTERN Prog* prog_div;
212 EXTERN Prog* prog_divl;
213 EXTERN Prog* prog_mod;
214 EXTERN Prog* prog_modl;
216 EXTERN char debug[128];
218 EXTERN char fnuxi8[8];
219 EXTERN Sym* hash[NHASH];
220 EXTERN Sym* histfrog[MAXHIST];
221 EXTERN int histfrogp;
223 EXTERN char* library[50];
224 EXTERN char* libraryobj[50];
226 EXTERN int xrefresolv;
228 EXTERN char inuxi1[1];
229 EXTERN char inuxi2[2];
230 EXTERN char inuxi4[4];
233 EXTERN char literal[32];
237 EXTERN long instoffset;
238 EXTERN char* outfile;
241 EXTERN long staticgen;
243 EXTERN long textsize;
245 EXTERN char xcmp[C_NCLASS][C_NCLASS];
250 extern Optab optab[];
251 extern char* anames[];
253 #pragma varargck type "A" int
254 #pragma varargck type "A" uint
255 #pragma varargck type "D" Adr*
256 #pragma varargck type "N" Adr*
257 #pragma varargck type "P" Prog*
258 #pragma varargck type "S" char*
260 #pragma varargck argpos diag 1
268 void addhist(long, int);
269 void histtoauto(void);
271 void append(Prog*, Prog*);
274 int asmout(Prog*, Optab*, int);
276 long atolwhex(char*);
282 double cputime(void);
283 void datblk(long, long);
284 void diag(char*, ...);
288 long entryvalue(void);
289 void errorexit(void);
290 void exchange(Prog*);
291 int find1(long, int);
294 double ieeedtod(Ieee*);
295 long ieeedtof(Ieee*);
297 void ldobj(int, long, char*);
300 void initmuldiv(void);
301 Sym* lookup(char*, int);
310 int ocmp(const void*, const void*);
312 Optab* oplook(Prog*);
315 void prepend(Prog*, Prog*);
318 void putsymb(char*, int, long, int);
321 long rnd(long, long);
322 void sched(Prog*, Prog*);
325 void xdefine(char*, int, long);