struct Adr
{
union
{
long u0offset;
char u0scon[8];
Prog *u0cond; /* not used, but should be D_BRANCH */
Ieee u0ieee;
} u0;
union
{
Auto* u1autom;
Sym* u1sym;
} u1;
short type;
uchar index;
char scale;
};
struct Prog
{
Adr from;
Adr to;
Prog *forwd;
Prog* link;
Prog* pcond; /* work on this */
long pc;
long line;
short as;
char width; /* fake for DATA */
char ft; /* oclass cache */
char tt;
uchar mark; /* work on these */
uchar back;
};
struct Auto
{
Sym* asym;
Auto* link;
long aoffset;
short type;
};
struct Sym
{
char *name;
short type;
short version;
short become;
short frame;
uchar subtype;
char dupok;
ushort file;
long value;
long sig;
Sym* link;
};
struct Optab
{
short as;
uchar* ytab;
uchar prefix;
uchar op[20];
};
#pragma varargck type "A" int
#pragma varargck type "A" uint
#pragma varargck type "D" Adr*
#pragma varargck type "P" Prog*
#pragma varargck type "R" int
#pragma varargck type "R" uint
#pragma varargck type "S" char*
#pragma varargck argpos diag 1
EXTERN long HEADR;
EXTERN long HEADTYPE;
EXTERN long INITDAT;
EXTERN long INITRND;
EXTERN long INITTEXT;
EXTERN char* INITENTRY; /* entry point */
EXTERN Biobuf bso;
EXTERN long bsssize;
EXTERN long casepc;
EXTERN int cbc;
EXTERN char* cbp;
EXTERN char* pcstr;
EXTERN int cout;
EXTERN Auto* curauto;
EXTERN Auto* curhist;
EXTERN Prog* curp;
EXTERN Prog* curtext;
EXTERN Prog* datap;
EXTERN Prog* edatap;
EXTERN long datsize;
EXTERN char debug[128];
EXTERN char literal[32];
EXTERN Prog* etextp;
EXTERN Prog* firstp;
EXTERN char fnuxi8[8];
EXTERN char fnuxi4[4];
EXTERN Sym* hash[NHASH];
EXTERN Sym* histfrog[MAXHIST];
EXTERN int histfrogp;
EXTERN int histgen;
EXTERN char* library[50];
EXTERN char* libraryobj[50];
EXTERN int libraryp;
EXTERN int xrefresolv;
EXTERN char inuxi1[1];
EXTERN char inuxi2[2];
EXTERN char inuxi4[4];
EXTERN char ycover[Ymax*Ymax];
EXTERN uchar* andptr;
EXTERN uchar and[30];
EXTERN char reg[D_XNONE];
EXTERN Prog* lastp;
EXTERN long lcsize;
EXTERN int nerrors;
EXTERN long nsymbol;
EXTERN char* noname;
EXTERN char* outfile;
EXTERN long pc;
EXTERN long spsize;
EXTERN Sym* symlist;
EXTERN long symsize;
EXTERN Prog* textp;
EXTERN long textsize;
EXTERN int version;
EXTERN Prog zprg;
EXTERN int dtype;
EXTERN Adr* reloca;
EXTERN int doexp, dlm;
EXTERN int imports, nimports;
EXTERN int exports, nexports, allexport;
EXTERN char* EXPTAB;
EXTERN Prog undefp;