* Moved lcc and q3asm into code/tools
This commit is contained in:
parent
b1cef6352e
commit
ad118b9baf
452 changed files with 0 additions and 0 deletions
102
code/tools/lcc/src/config.h
Normal file
102
code/tools/lcc/src/config.h
Normal file
|
@ -0,0 +1,102 @@
|
|||
typedef struct {
|
||||
unsigned char max_unaligned_load;
|
||||
Symbol (*rmap)(int);
|
||||
|
||||
void (*blkfetch)(int size, int off, int reg, int tmp);
|
||||
void (*blkstore)(int size, int off, int reg, int tmp);
|
||||
void (*blkloop)(int dreg, int doff,
|
||||
int sreg, int soff,
|
||||
int size, int tmps[]);
|
||||
void (*_label)(Node);
|
||||
int (*_rule)(void*, int);
|
||||
short **_nts;
|
||||
void (*_kids)(Node, int, Node*);
|
||||
char **_string;
|
||||
char **_templates;
|
||||
char *_isinstruction;
|
||||
char **_ntname;
|
||||
void (*emit2)(Node);
|
||||
void (*doarg)(Node);
|
||||
void (*target)(Node);
|
||||
void (*clobber)(Node);
|
||||
} Xinterface;
|
||||
extern int askregvar(Symbol, Symbol);
|
||||
extern void blkcopy(int, int, int, int, int, int[]);
|
||||
extern int getregnum(Node);
|
||||
extern int mayrecalc(Node);
|
||||
extern int mkactual(int, int);
|
||||
extern void mkauto(Symbol);
|
||||
extern Symbol mkreg(char *, int, int, int);
|
||||
extern Symbol mkwildcard(Symbol *);
|
||||
extern int move(Node);
|
||||
extern int notarget(Node);
|
||||
extern void parseflags(int, char **);
|
||||
extern int range(Node, int, int);
|
||||
extern unsigned regloc(Symbol); /* omit */
|
||||
extern void rtarget(Node, int, Symbol);
|
||||
extern void setreg(Node, Symbol);
|
||||
extern void spill(unsigned, int, Node);
|
||||
extern int widens(Node);
|
||||
|
||||
extern int argoffset, maxargoffset;
|
||||
extern int bflag, dflag;
|
||||
extern int dalign, salign;
|
||||
extern int framesize;
|
||||
extern unsigned freemask[], usedmask[];
|
||||
extern int offset, maxoffset;
|
||||
extern int swap;
|
||||
extern unsigned tmask[], vmask[];
|
||||
typedef struct {
|
||||
unsigned listed:1;
|
||||
unsigned registered:1;
|
||||
unsigned emitted:1;
|
||||
unsigned copy:1;
|
||||
unsigned equatable:1;
|
||||
unsigned spills:1;
|
||||
unsigned mayrecalc:1;
|
||||
void *state;
|
||||
short inst;
|
||||
Node kids[3];
|
||||
Node prev, next;
|
||||
Node prevuse;
|
||||
short argno;
|
||||
} Xnode;
|
||||
typedef struct {
|
||||
Symbol vbl;
|
||||
short set;
|
||||
short number;
|
||||
unsigned mask;
|
||||
} *Regnode;
|
||||
enum { IREG=0, FREG=1 };
|
||||
typedef struct {
|
||||
char *name;
|
||||
unsigned int eaddr; /* omit */
|
||||
int offset;
|
||||
Node lastuse;
|
||||
int usecount;
|
||||
Regnode regnode;
|
||||
Symbol *wildcard;
|
||||
} Xsymbol;
|
||||
enum { RX=2 };
|
||||
typedef struct {
|
||||
int offset;
|
||||
unsigned freemask[2];
|
||||
} Env;
|
||||
|
||||
#define LBURG_MAX SHRT_MAX
|
||||
|
||||
enum { VREG=(44<<4) };
|
||||
|
||||
/* Exported for the front end */
|
||||
extern void blockbeg(Env *);
|
||||
extern void blockend(Env *);
|
||||
extern void emit(Node);
|
||||
extern Node gen(Node);
|
||||
|
||||
extern unsigned emitbin(Node, int);
|
||||
|
||||
#ifdef NDEBUG
|
||||
#define debug(x) (void)0
|
||||
#else
|
||||
#define debug(x) (void)(dflag&&((x),0))
|
||||
#endif
|
Loading…
Add table
Add a link
Reference in a new issue