#define NSNAME 8#define NSYM 50#define NREG 16 #define NOPROF (1<<0)#define DUPOK (1<<1)#define ALLTHUMBS (1<<2) #define REGRET 0#define REGARG 0/* compiler allocates R1 up as temps *//* compiler allocates register variables R3 up */#define REGEXT 10/* compiler allocates external registers R10 down */#define REGTMP 11#define REGSB 12#define REGSP 13#define REGLINK 14#define REGPC 15 #define REGTMPT 7 /* used by the loader for thumb code */ #define NFREG 8#define FREGRET 0#define FREGEXT 7/* compiler allocates register variables F0 up *//* compiler allocates external registers F7 down */ enum as{ AXXX, AAND, AEOR, ASUB, ARSB, AADD, AADC, ASBC, ARSC, ATST, ATEQ, ACMP, ACMN, AORR, ABIC, AMVN, AB, ABL, /* * Do not reorder or fragment the conditional branch * opcodes, or the predication code will break */ ABEQ, ABNE, ABCS, ABHS, ABCC, ABLO, ABMI, ABPL, ABVS, ABVC, ABHI, ABLS, ABGE, ABLT, ABGT, ABLE, AMOVWD, AMOVWF, AMOVDW, AMOVFW, AMOVFD, AMOVDF, AMOVF, AMOVD, ACMPF, ACMPD, AADDF, AADDD, ASUBF, ASUBD, AMULF, AMULD, ADIVF, ADIVD, ASRL, ASRA, ASLL, AMULU, ADIVU, AMUL, ADIV, AMOD, AMODU, AMOVB, AMOVBU, AMOVH, AMOVHU, AMOVW, AMOVM, ASWPBU, ASWPW, ANOP, ARFE, ASWI, AMULA, ADATA, AGLOBL, AGOK, AHISTORY, ANAME, ARET, ATEXT, AWORD, ADYNT, AINIT, ABCASE, ACASE, AEND, AMULL, AMULAL, AMULLU, AMULALU, ABX, ABXRET, ADWORD, ASIGNAME, ALAST,}; /* scond byte */#define C_SCOND ((1<<4)-1)#define C_SBIT (1<<4)#define C_PBIT (1<<5)#define C_WBIT (1<<6)#define C_FBIT (1<<7) /* psr flags-only */#define C_UBIT (1<<7) /* up bit */ /* 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_CONST (D_NONE+7)#define D_FCONST (D_NONE+8)#define D_SCONST (D_NONE+9)#define D_PSR (D_NONE+10)#define D_REG (D_NONE+12)#define D_FREG (D_NONE+13)#define D_FILE (D_NONE+16)#define D_OCONST (D_NONE+17)#define D_FILE1 (D_NONE+18) #define D_SHIFT (D_NONE+19)#define D_FPCR (D_NONE+20)#define D_REGREG (D_NONE+21) /* name */#define D_EXTERN (D_NONE+3)#define D_STATIC (D_NONE+4)#define D_AUTO (D_NONE+5)#define D_PARAM (D_NONE+6) /* * 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 */};
#define NSNAME 8
#define NSYM 50
#define NREG 16
#define NOPROF (1<<0)
#define DUPOK (1<<1)
#define ALLTHUMBS (1<<2)
#define REGRET 0
#define REGARG 0
/* compiler allocates R1 up as temps */
/* compiler allocates register variables R3 up */
#define REGEXT 10
/* compiler allocates external registers R10 down */
#define REGTMP 11
#define REGSB 12
#define REGSP 13
#define REGLINK 14
#define REGPC 15
#define REGTMPT 7 /* used by the loader for thumb code */
#define NFREG 8
#define FREGRET 0
#define FREGEXT 7
/* compiler allocates register variables F0 up */
/* compiler allocates external registers F7 down */
enum as
{
AXXX,
AAND,
AEOR,
ASUB,
ARSB,
AADD,
AADC,
ASBC,
ARSC,
ATST,
ATEQ,
ACMP,
ACMN,
AORR,
ABIC,
AMVN,
AB,
ABL,
/*
* Do not reorder or fragment the conditional branch
* opcodes, or the predication code will break
*/
ABEQ,
ABNE,
ABCS,
ABHS,
ABCC,
ABLO,
ABMI,
ABPL,
ABVS,
ABVC,
ABHI,
ABLS,
ABGE,
ABLT,
ABGT,
ABLE,
AMOVWD,
AMOVWF,
AMOVDW,
AMOVFW,
AMOVFD,
AMOVDF,
AMOVF,
AMOVD,
ACMPF,
ACMPD,
AADDF,
AADDD,
ASUBF,
ASUBD,
AMULF,
AMULD,
ADIVF,
ADIVD,
ASRL,
ASRA,
ASLL,
AMULU,
ADIVU,
AMUL,
ADIV,
AMOD,
AMODU,
AMOVB,
AMOVBU,
AMOVH,
AMOVHU,
AMOVW,
AMOVM,
ASWPBU,
ASWPW,
ANOP,
ARFE,
ASWI,
AMULA,
ADATA,
AGLOBL,
AGOK,
AHISTORY,
ANAME,
ARET,
ATEXT,
AWORD,
ADYNT,
AINIT,
ABCASE,
ACASE,
AEND,
AMULL,
AMULAL,
AMULLU,
AMULALU,
ABX,
ABXRET,
ADWORD,
ASIGNAME,
ALAST,
};
/* scond byte */
#define C_SCOND ((1<<4)-1)
#define C_SBIT (1<<4)
#define C_PBIT (1<<5)
#define C_WBIT (1<<6)
#define C_FBIT (1<<7) /* psr flags-only */
#define C_UBIT (1<<7) /* up bit */
/* 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_CONST (D_NONE+7)
#define D_FCONST (D_NONE+8)
#define D_SCONST (D_NONE+9)
#define D_PSR (D_NONE+10)
#define D_REG (D_NONE+12)
#define D_FREG (D_NONE+13)
#define D_FILE (D_NONE+16)
#define D_OCONST (D_NONE+17)
#define D_FILE1 (D_NONE+18)
#define D_SHIFT (D_NONE+19)
#define D_FPCR (D_NONE+20)
#define D_REGREG (D_NONE+21)
/* name */
#define D_EXTERN (D_NONE+3)
#define D_STATIC (D_NONE+4)
#define D_AUTO (D_NONE+5)
#define D_PARAM (D_NONE+6)
/*
* 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 */
};