ref: f43df64325efb80fc48a85009df016477238b21b
dir: /sys/src/cmd/7a/a.h/
#include <u.h> #include <libc.h> #include <bio.h> #include "../7c/7.out.h" #ifndef EXTERN #define EXTERN extern #endif #define MAXALIGN 7 typedef struct Sym Sym; typedef struct Ref Ref; typedef struct Gen Gen; typedef struct Io Io; typedef struct Hist Hist; #define FPCHIP 1 #define NSYMB 500 #define BUFSIZ 8192 #define HISTSZ 20 #define NINCLUDE 10 #define NHUNK 10000 #define EOF (-1) #define IGN (-2) #define GETC() ((--fi.c < 0)? filbuf(): *fi.p++ & 0xff) #define NHASH 503 #define STRINGSZ 200 #define NMACRO 10 #define ALLOC(lhs, type)\ while(nhunk < sizeof(type))\ gethunk();\ lhs = (type*)hunk;\ nhunk -= sizeof(type);\ hunk += sizeof(type); #define ALLOCN(lhs, len, n)\ if(lhs+len != hunk || nhunk < n) {\ while(nhunk <= len)\ gethunk();\ memmove(hunk, lhs, len);\ lhs = hunk;\ hunk += len;\ nhunk -= len;\ }\ hunk += n;\ nhunk -= n; struct Sym { Sym* link; Ref* ref; char* macro; vlong value; long dummy_pad; ushort type; char *name; char sym; }; #define S ((Sym*)0) struct Ref { int class; }; struct { char* p; int c; } fi; struct Io { Io* link; char b[BUFSIZ]; char* p; short c; short f; }; #define I ((Io*)0) struct { Sym* sym; short type; } h[NSYM]; struct Gen { Sym* sym; vlong offset; long dummy_pad; short type; short reg; short name; double dval; char sval[8]; }; struct Hist { Hist* link; char* name; long line; vlong offset; }; #define H ((Hist*)0) enum { CLAST, CMACARG, CMACRO, CPREPROC, }; char debug[256]; Sym* hash[NHASH]; char* Dlist[30]; int nDlist; Hist* ehist; int newflag; Hist* hist; char* hunk; char* include[NINCLUDE]; Io* iofree; Io* ionext; Io* iostack; long lineno; int nerrors; long nhunk; int ninclude; Gen nullgen; char* outfile; int pass; char* pathname; vlong pc; int peekc; int sym; char symb[NSYMB]; int thechar; char* thestring; long thunk; Biobuf obuf; void errorexit(void); void pushio(void); void newio(void); void newfile(char*, int); Sym* slookup(char*); Sym* lookup(void); void syminit(Sym*); long yylex(void); int getc(void); int getnsc(void); void unget(int); int escchar(int); void cinit(void); void pinit(char*); void cclean(void); int isreg(Gen*); void outcode(int, Gen*, int, Gen*); void zname(char*, int, int); void zaddr(Gen*, int); void ieeedtod(Ieee*, double); int filbuf(void); Sym* getsym(void); void domacro(void); void macund(void); void macdef(void); void macexpand(Sym*, char*); void macinc(void); void maclin(void); void macprag(void); void macif(int); void macend(void); void outhist(void); void dodefine(char*); void prfile(long); void linehist(char*, int); void gethunk(void); void yyerror(char*, ...); int yyparse(void); void setinclude(char*); int assemble(char*); /* * system-dependent stuff from ../cc/compat.c */ enum /* keep in synch with ../cc/cc.h */ { Plan9 = 1<<0, Unix = 1<<1, Windows = 1<<2, }; int mywait(int*); int mycreat(char*, int); int systemtype(int); int pathchar(void); char* mygetwd(char*, int); int myexec(char*, char*[]); int mydup(int, int); int myfork(void); int mypipe(int*); void* mysbrk(ulong);