#define NSNAME 8 #define NSYM 50 #define NREG 32 #define NOPROF (1<<0) #define DUPOK (1<<1) enum { REGRET = 0, /* return register and first temp, grows++ */ REGARG = 0, /* first arg passed in */ REGEXT = 15, /* first external register, grows-- */ REGLINK = 26, /* subroutine linkage */ REGTMP = 27, /* used by the loader */ REGTMP2 = 28, /* used by the loader */ REGSB = 29, /* static pointer */ REGSP = 30, /* stack pointer */ REGZERO = 31, /* always zero */ FREGRET = 0, FREGEXT = 27, /* first external register */ FREGHALF = 28, /* double */ FREGONE = 29, /* double */ FREGTWO = 30, /* double */ FREGZERO = 31, /* both float and double */ }; enum as { AXXX, AGOK, ATEXT, ADATA, AGLOBL, AHISTORY, ANAME, AWORD, ANOP, AMOVL, AMOVLU, AMOVQ, AMOVQU, AMOVS, AMOVT, AMOVB, AMOVBU, AMOVW, AMOVWU, AMOVA, AMOVAH, AMOVLL, AMOVQL, AMOVLC, AMOVQC, AMOVQP, AMOVLP, AADDL, AADDLV, AADDQ, AADDQV, AS4ADDL, AS4ADDQ, AS8ADDL, AS8ADDQ, AS4SUBL, AS4SUBQ, AS8SUBL, AS8SUBQ, ASUBL, ASUBLV, ASUBQ, ASUBQV, ACMPEQ, ACMPGT, ACMPGE, ACMPUGT, ACMPUGE, ACMPBLE, AAND, AANDNOT, AOR, AORNOT, AXOR, AXORNOT, ACMOVEQ, ACMOVNE, ACMOVLT, ACMOVGE, ACMOVLE, ACMOVGT, ACMOVLBC, ACMOVLBS, AMULL, AMULQ, AMULLV, AMULQV, AUMULH, ADIVQ, AMODQ, ADIVQU, AMODQU, ADIVL, AMODL, ADIVLU, AMODLU, ASLLQ, ASRLQ, ASRAQ, ASLLL, ASRLL, ASRAL, AEXTBL, AEXTWL, AEXTLL, AEXTQL, AEXTWH, AEXTLH, AEXTQH, AINSBL, AINSWL, AINSLL, AINSQL, AINSWH, AINSLH, AINSQH, AMSKBL, AMSKWL, AMSKLL, AMSKQL, AMSKWH, AMSKLH, AMSKQH, AZAP, AZAPNOT, AJMP, AJSR, ARET, ABR, ABSR, ABEQ, ABNE, ABLT, ABGE, ABLE, ABGT, ABLBC, ABLBS, AFBEQ, AFBNE, AFBLT, AFBGE, AFBLE, AFBGT, ATRAPB, AMB, AFETCH, AFETCHM, ARPCC, ACPYS, ACPYSN, ACPYSE, ACVTLQ, ACVTQL, AFCMOVEQ, AFCMOVNE, AFCMOVLT, AFCMOVGE, AFCMOVLE, AFCMOVGT, AADDS, AADDT, ACMPTEQ, ACMPTGT, ACMPTGE, ACMPTUN, ACVTQS, ACVTQT, ACVTTS, ACVTTQ, ADIVS, ADIVT, AMULS, AMULT, ASUBS, ASUBT, ACALL_PAL, AREI, AEND, ADYNT, AINIT, ASIGNAME, ALAST, }; /* type/name */ enum { D_GOK = 0, D_NONE, /* name */ D_EXTERN, D_STATIC, D_AUTO, D_PARAM, /* type */ D_BRANCH, D_OREG, D_CONST, D_FCONST, D_SCONST, D_REG, D_FREG, D_FCREG, D_PREG, D_PCC, D_FILE, D_FILE1, }; /* * this is the ranlib header */ #define SYMDEF "__.SYMDEF" /* * this is the simulated IEEE floating point */ typedef struct ieee Ieee; struct ieee { long l; /* contains ls-man 0xffffffff */ long h; /* contains sign 0x80000000 exp 0x7ff00000 ms-man 0x000fffff */ };