#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 6/* compiler allocates external registers R5 down */#define REGTMPT 7 /* used by the loader - thumb */#define REGTMP 11 /* used by the loader - arm */#define REGSB 12#define REGSP 13#define REGLINK 14#define REGPC 15 #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, // not used AADD, AADC, ASBC, ARSC, // not used ATST, ATEQ, // not used 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, // right logical ASRA, // right arithmetic ASLL, // left logical = left arithmetic AMULU, ADIVU, AMUL, ADIV, AMOD, AMODU, AMOVB, AMOVBU, AMOVH, AMOVHU, AMOVW, AMOVM, ASWPBU, // not used ASWPW, // not used ANOP, ARFE, ASWI, AMULA, // not used ADATA, AGLOBL, AGOK, AHISTORY, ANAME, ARET, // fn return ATEXT, // fn start AWORD, ADYNT, // not used AINIT, // not used ABCASE, // not used ACASE, // not used AEND, AMULL, AMULAL, AMULLU, AMULALU, ABX, ABXRET, ADWORD, 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_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) /* not used */#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 6
/* compiler allocates external registers R5 down */
#define REGTMPT 7 /* used by the loader - thumb */
#define REGTMP 11 /* used by the loader - arm */
#define REGSB 12
#define REGSP 13
#define REGLINK 14
#define REGPC 15
#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, // not used
AADD,
AADC,
ASBC,
ARSC, // not used
ATST,
ATEQ, // not used
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, // right logical
ASRA, // right arithmetic
ASLL, // left logical = left arithmetic
AMULU,
ADIVU,
AMUL,
ADIV,
AMOD,
AMODU,
AMOVB,
AMOVBU,
AMOVH,
AMOVHU,
AMOVW,
AMOVM,
ASWPBU, // not used
ASWPW, // not used
ANOP,
ARFE,
ASWI,
AMULA, // not used
ADATA,
AGLOBL,
AGOK,
AHISTORY,
ANAME,
ARET, // fn return
ATEXT, // fn start
AWORD,
ADYNT, // not used
AINIT, // not used
ABCASE, // not used
ACASE, // not used
AEND,
AMULL,
AMULAL,
AMULLU,
AMULALU,
ABX,
ABXRET,
ADWORD,
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_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) /* not used */
#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 */
};