Main Page | Class Hierarchy | Alphabetical List | Data Structures | Directories | File List | Data Fields | Globals

config.h

Go to the documentation of this file.
00001 typedef struct {
00002     unsigned char max_unaligned_load;
00003     Symbol (*rmap)(int);
00004 
00005     void (*blkfetch)(int size, int off, int reg, int tmp);
00006     void (*blkstore)(int size, int off, int reg, int tmp);
00007     void (*blkloop)(int dreg, int doff,
00008                      int sreg, int soff,
00009                      int size, int tmps[]);
00010     void (*_label)(Node);
00011     int (*_rule)(void*, int);
00012     short **_nts;
00013     void (*_kids)(Node, int, Node*);
00014     char **_string;
00015     char **_templates;
00016     char *_isinstruction;
00017     char **_ntname;
00018     void (*emit2)(Node);
00019     void (*doarg)(Node);
00020     void (*target)(Node);
00021     void (*clobber)(Node);
00022 } Xinterface;
00023 extern int     askregvar(Symbol, Symbol);
00024 extern void    blkcopy(int, int, int, int, int, int[]);
00025 extern int     getregnum(Node);
00026 extern int     mayrecalc(Node);
00027 extern int     mkactual(int, int);
00028 extern void    mkauto(Symbol);
00029 extern Symbol  mkreg(char *, int, int, int);
00030 extern Symbol  mkwildcard(Symbol *);
00031 extern int     move(Node);
00032 extern int     notarget(Node);
00033 extern void    parseflags(int, char **);
00034 extern int     range(Node, int, int);
00035 extern unsigned regloc(Symbol);  /* omit */
00036 extern void    rtarget(Node, int, Symbol);
00037 extern void    setreg(Node, Symbol);
00038 extern void    spill(unsigned, int, Node);
00039 extern int     widens(Node);
00040 
00041 extern int      argoffset, maxargoffset;
00042 extern int      bflag, dflag;
00043 extern int      dalign, salign;
00044 extern int      framesize;
00045 extern unsigned freemask[], usedmask[];
00046 extern int      offset, maxoffset;
00047 extern int      swap;
00048 extern unsigned tmask[], vmask[];
00049 typedef struct {
00050     unsigned listed:1;
00051     unsigned registered:1;
00052     unsigned emitted:1;
00053     unsigned copy:1;
00054     unsigned equatable:1;
00055     unsigned spills:1;
00056     unsigned mayrecalc:1;
00057     void *state;
00058     short inst;
00059     Node kids[3];
00060     Node prev, next;
00061     Node prevuse;
00062     short argno;
00063 } Xnode;
00064 typedef struct {
00065     Symbol vbl;
00066     short set;
00067     short number;
00068     unsigned mask;
00069 } *Regnode;
00070 enum { IREG=0, FREG=1 };
00071 typedef struct {
00072     char *name;
00073     unsigned int eaddr;  /* omit */
00074     int offset;
00075     Node lastuse;
00076     int usecount;
00077     Regnode regnode;
00078     Symbol *wildcard;
00079 } Xsymbol;
00080 enum { RX=2 };
00081 typedef struct {
00082     int offset;
00083     unsigned freemask[2];
00084 } Env;
00085 
00086 #define LBURG_MAX SHRT_MAX
00087 
00088 enum { VREG=(44<<4) };
00089 
00090 /* Exported for the front end */
00091 extern void             blockbeg(Env *);
00092 extern void             blockend(Env *);
00093 extern void             emit(Node);
00094 extern Node             gen(Node);
00095 
00096 extern unsigned         emitbin(Node, int);
00097 
00098 #ifdef NDEBUG
00099 #define debug(x) (void)0
00100 #else
00101 #define debug(x) (void)(dflag&&((x),0))
00102 #endif

Generated on Thu Aug 25 12:38:12 2005 for Quake III Arena by  doxygen 1.3.9.1