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
102 MAXHIST = 20, /* limit of path elements for history symbols */
141 C_SCON, /* 13 bit signed */
142 C_UCON, /* low 10 bits 0 */
183 uchar obuf[MAXIO]; /* output buffer */
184 uchar ibuf[MAXIO]; /* input buffer */
192 EXTERN long HEADR; /* length of header */
193 EXTERN int HEADTYPE; /* type of header */
194 EXTERN long INITDAT; /* data location */
195 EXTERN long INITRND; /* data round above text location */
196 EXTERN long INITTEXT; /* text location */
197 EXTERN char* INITENTRY; /* entry point */
198 EXTERN long autosize;
204 EXTERN Auto* curauto;
205 EXTERN Auto* curhist;
207 EXTERN Prog* curtext;
209 EXTERN Prog* prog_mul;
210 EXTERN Prog* prog_div;
211 EXTERN Prog* prog_divl;
212 EXTERN Prog* prog_mod;
213 EXTERN Prog* prog_modl;
215 EXTERN char debug[128];
217 EXTERN char fnuxi8[8];
218 EXTERN Sym* hash[NHASH];
219 EXTERN Sym* histfrog[MAXHIST];
220 EXTERN int histfrogp;
222 EXTERN char* library[50];
223 EXTERN char* libraryobj[50];
225 EXTERN int xrefresolv;
227 EXTERN char inuxi1[1];
228 EXTERN char inuxi2[2];
229 EXTERN char inuxi4[4];
232 EXTERN char literal[32];
236 EXTERN long instoffset;
237 EXTERN char* outfile;
240 EXTERN long staticgen;
242 EXTERN long textsize;
244 EXTERN char xcmp[C_NCLASS][C_NCLASS];
249 extern Optab optab[];
250 extern char* anames[];
252 #pragma varargck type "A" int
253 #pragma varargck type "A" uint
254 #pragma varargck type "D" Adr*
255 #pragma varargck type "N" Adr*
256 #pragma varargck type "P" Prog*
257 #pragma varargck type "S" char*
259 #pragma varargck argpos diag 1
267 void addhist(long, int);
268 void histtoauto(void);
270 void append(Prog*, Prog*);
273 int asmout(Prog*, Optab*, int);
275 long atolwhex(char*);
281 double cputime(void);
282 void datblk(long, long);
283 void diag(char*, ...);
287 long entryvalue(void);
288 void errorexit(void);
289 void exchange(Prog*);
290 int find1(long, int);
293 double ieeedtod(Ieee*);
294 long ieeedtof(Ieee*);
296 void ldobj(int, long, char*);
299 void initmuldiv(void);
300 Sym* lookup(char*, int);
309 int ocmp(const void*, const void*);
311 Optab* oplook(Prog*);
314 void prepend(Prog*, Prog*);
317 void putsymb(char*, int, long, int);
320 long rnd(long, long);
321 void sched(Prog*, Prog*);
324 void xdefine(char*, int, long);