OpenCores
URL https://opencores.org/ocsvn/eco32/eco32/trunk

Subversion Repositories eco32

[/] [eco32/] [tags/] [eco32-0.25/] [lcc/] [src/] [config.h] - Diff between revs 4 and 248

Only display areas with differences | Details | Blame | View Log

Rev 4 Rev 248
/* $Id: config.h,v 1.1 2002/08/28 23:12:42 drh Exp $ */
/* $Id: config.h,v 1.1 2002/08/28 23:12:42 drh Exp $ */
typedef struct {
typedef struct {
        unsigned char max_unaligned_load;
        unsigned char max_unaligned_load;
        Symbol (*rmap)(int);
        Symbol (*rmap)(int);
 
 
        void (*blkfetch)(int size, int off, int reg, int tmp);
        void (*blkfetch)(int size, int off, int reg, int tmp);
        void (*blkstore)(int size, int off, int reg, int tmp);
        void (*blkstore)(int size, int off, int reg, int tmp);
        void (*blkloop)(int dreg, int doff,
        void (*blkloop)(int dreg, int doff,
                         int sreg, int soff,
                         int sreg, int soff,
                         int size, int tmps[]);
                         int size, int tmps[]);
        void (*_label)(Node);
        void (*_label)(Node);
        int (*_rule)(void*, int);
        int (*_rule)(void*, int);
        short **_nts;
        short **_nts;
        void (*_kids)(Node, int, Node*);
        void (*_kids)(Node, int, Node*);
        char **_string;
        char **_string;
        char **_templates;
        char **_templates;
        char *_isinstruction;
        char *_isinstruction;
        char **_ntname;
        char **_ntname;
        void (*emit2)(Node);
        void (*emit2)(Node);
        void (*doarg)(Node);
        void (*doarg)(Node);
        void (*target)(Node);
        void (*target)(Node);
        void (*clobber)(Node);
        void (*clobber)(Node);
} Xinterface;
} Xinterface;
extern int     askregvar(Symbol, Symbol);
extern int     askregvar(Symbol, Symbol);
extern void    blkcopy(int, int, int, int, int, int[]);
extern void    blkcopy(int, int, int, int, int, int[]);
extern unsigned emitasm(Node, int);
extern unsigned emitasm(Node, int);
extern int     getregnum(Node);
extern int     getregnum(Node);
extern int     mayrecalc(Node);
extern int     mayrecalc(Node);
extern int     mkactual(int, int);
extern int     mkactual(int, int);
extern void    mkauto(Symbol);
extern void    mkauto(Symbol);
extern Symbol  mkreg(char *, int, int, int);
extern Symbol  mkreg(char *, int, int, int);
extern Symbol  mkwildcard(Symbol *);
extern Symbol  mkwildcard(Symbol *);
extern int     move(Node);
extern int     move(Node);
extern int     notarget(Node);
extern int     notarget(Node);
extern void    parseflags(int, char **);
extern void    parseflags(int, char **);
extern int     range(Node, int, int);
extern int     range(Node, int, int);
extern unsigned regloc(Symbol);  /* omit */
extern unsigned regloc(Symbol);  /* omit */
extern void    rtarget(Node, int, Symbol);
extern void    rtarget(Node, int, Symbol);
extern void    setreg(Node, Symbol);
extern void    setreg(Node, Symbol);
extern void    spill(unsigned, int, Node);
extern void    spill(unsigned, int, Node);
 
 
extern int      argoffset, maxargoffset;
extern int      argoffset, maxargoffset;
extern int      bflag, dflag;
extern int      bflag, dflag;
extern int      dalign, salign;
extern int      dalign, salign;
extern int      framesize;
extern int      framesize;
extern unsigned freemask[], usedmask[];
extern unsigned freemask[], usedmask[];
extern int      offset, maxoffset;
extern int      offset, maxoffset;
extern int      swap;
extern int      swap;
extern unsigned tmask[], vmask[];
extern unsigned tmask[], vmask[];
typedef struct {
typedef struct {
        unsigned listed:1;
        unsigned listed:1;
        unsigned registered:1;
        unsigned registered:1;
        unsigned emitted:1;
        unsigned emitted:1;
        unsigned copy:1;
        unsigned copy:1;
        unsigned equatable:1;
        unsigned equatable:1;
        unsigned spills:1;
        unsigned spills:1;
        unsigned mayrecalc:1;
        unsigned mayrecalc:1;
        void *state;
        void *state;
        short inst;
        short inst;
        Node kids[3];
        Node kids[3];
        Node prev, next;
        Node prev, next;
        Node prevuse;
        Node prevuse;
        short argno;
        short argno;
} Xnode;
} Xnode;
typedef struct {
typedef struct {
        Symbol vbl;
        Symbol vbl;
        short set;
        short set;
        short number;
        short number;
        unsigned mask;
        unsigned mask;
} *Regnode;
} *Regnode;
enum { IREG=0, FREG=1 };
enum { IREG=0, FREG=1 };
typedef struct {
typedef struct {
        char *name;
        char *name;
        unsigned int eaddr;  /* omit */
        unsigned int eaddr;  /* omit */
        int offset;
        int offset;
        Node lastuse;
        Node lastuse;
        int usecount;
        int usecount;
        Regnode regnode;
        Regnode regnode;
        Symbol *wildcard;
        Symbol *wildcard;
} Xsymbol;
} Xsymbol;
enum { RX=2 };
enum { RX=2 };
typedef struct {
typedef struct {
        int offset;
        int offset;
        unsigned freemask[2];
        unsigned freemask[2];
} Env;
} Env;
 
 
#define LBURG_MAX SHRT_MAX
#define LBURG_MAX SHRT_MAX
 
 
enum { VREG=(44<<4) };
enum { VREG=(44<<4) };
 
 
/* Exported for the front end */
/* Exported for the front end */
extern void             blockbeg(Env *);
extern void             blockbeg(Env *);
extern void             blockend(Env *);
extern void             blockend(Env *);
extern void             emit(Node);
extern void             emit(Node);
extern Node             gen(Node);
extern Node             gen(Node);
 
 
#ifdef NDEBUG
#ifdef NDEBUG
#define debug(x) (void)0
#define debug(x) (void)0
#else
#else
#define debug(x) (void)(dflag&&((x),0))
#define debug(x) (void)(dflag&&((x),0))
#endif
#endif
 
 

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.