Subversion Repositories planix.SVN

Rev

Rev 2 | Blame | Compare with Previous | Last modification | View Log | RSS feed

#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 */
};