266 lines
2.6 KiB
C
266 lines
2.6 KiB
C
#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 */
|
|
};
|