#define NSNAME  8
#define NSYM    50
#define NREG    32

#define NOPROF  (1<<0)
#define DUPOK   (1<<1)

#define REGZERO         0
#define REGRET          1
#define REGARG          1
/* compiler allocates R1 up as temps */
/* compiler allocates register variables R3-R23 */
#define REGEXT          25
/* compiler allocates external registers R25 down */
/* dont use R26 R27 */
#define REGTMP          28
#define REGSP           29
#define REGSB           30
#define REGLINK         31

#define FREGRET         0
/* compiler allocates register variables F4-F22 */
/* compiler allocates external registers F22 down */
#define FREGEXT         22
#define FREGZERO        24      /* both float and double */
#define FREGHALF        26      /* double */
#define FREGONE         28      /* double */
#define FREGTWO         30      /* double */

enum    as
{
       AXXX,

       AABSD,
       AABSF,
       AABSW,
       AADD,
       AADDD,
       AADDF,
       AADDU,
       AADDW,
       AAND,
       ABEQ,
       ABFPF,
       ABFPT,
       ABGEZ,
       ABGEZAL,
       ABGTZ,
       ABLEZ,
       ABLTZ,
       ABLTZAL,
       ABNE,
       ABREAK,
       ACMPEQD,
       ACMPEQF,
       ACMPGED,
       ACMPGEF,
       ACMPGTD,
       ACMPGTF,
       ADATA,
       ADIV,
       ADIVD,
       ADIVF,
       ADIVU,
       ADIVW,
       AGLOBL,
       AGOK,
       AHISTORY,
       AJAL,
       AJMP,
       AMOVB,
       AMOVBU,
       AMOVD,
       AMOVDF,
       AMOVDW,
       AMOVF,
       AMOVFD,
       AMOVFW,
       AMOVH,
       AMOVHU,
       AMOVW,
       AMOVWD,
       AMOVWF,
       AMOVWL,
       AMOVWR,
       AMUL,
       AMULD,
       AMULF,
       AMULU,
       AMULW,
       ANAME,
       ANEGD,
       ANEGF,
       ANEGW,
       ANOP,
       ANOR,
       AOR,
       AREM,
       AREMU,
       ARET,
       ARFE,
       ASGT,
       ASGTU,
       ASLL,
       ASRA,
       ASRL,
       ASUB,
       ASUBD,
       ASUBF,
       ASUBU,
       ASUBW,
       ASYSCALL,
       ATEXT,
       ATLBP,
       ATLBR,
       ATLBWI,
       ATLBWR,
       AWORD,
       AXOR,

       AEND,

       AMOVV,
       AMOVVL,
       AMOVVR,
       ASLLV,
       ASRAV,
       ASRLV,
       ADIVV,
       ADIVVU,
       AREMV,
       AREMVU,
       AMULV,
       AMULVU,
       AADDV,
       AADDVU,
       ASUBV,
       ASUBVU,

       ADYNT,
       AINIT,

       ABCASE,
       ACASE,

       ATRUNCFV,
       ATRUNCDV,
       ATRUNCFW,
       ATRUNCDW,
       AMOVWU,
       AMOVFV,
       AMOVDV,
       AMOVVF,
       AMOVVD,

       ASIGNAME,

       ALAST,
};

/* type/name */
#define D_GOK   0
#define D_NONE  1

/* type */
#define D_BRANCH (D_NONE+1)
#define D_OREG  (D_NONE+2)
#define D_EXTERN (D_NONE+3)     /* name */
#define D_STATIC (D_NONE+4)     /* name */
#define D_AUTO  (D_NONE+5)      /* name */
#define D_PARAM (D_NONE+6)      /* name */
#define D_CONST (D_NONE+7)
#define D_FCONST (D_NONE+8)
#define D_SCONST (D_NONE+9)
#define D_HI    (D_NONE+10)
#define D_LO    (D_NONE+11)
#define D_REG   (D_NONE+12)
#define D_FREG  (D_NONE+13)
#define D_FCREG (D_NONE+14)
#define D_MREG  (D_NONE+15)
#define D_FILE  (D_NONE+16)
#define D_OCONST (D_NONE+17)
#define D_FILE1 (D_NONE+18)
#define D_VCONST (D_NONE+19)

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