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

Subversion Repositories eco32

[/] [eco32/] [trunk/] [lcc/] [src/] [config.h.ORIG] - Blame information for rev 4

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 4 hellwig
/* $Id: config.h,v 1.1 2002/08/28 23:12:42 drh Exp $ */
2
typedef struct {
3
        unsigned char max_unaligned_load;
4
        Symbol (*rmap)(int);
5
 
6
        void (*blkfetch)(int size, int off, int reg, int tmp);
7
        void (*blkstore)(int size, int off, int reg, int tmp);
8
        void (*blkloop)(int dreg, int doff,
9
                         int sreg, int soff,
10
                         int size, int tmps[]);
11
        void (*_label)(Node);
12
        int (*_rule)(void*, int);
13
        short **_nts;
14
        void (*_kids)(Node, int, Node*);
15
        char **_string;
16
        char **_templates;
17
        char *_isinstruction;
18
        char **_ntname;
19
        void (*emit2)(Node);
20
        void (*doarg)(Node);
21
        void (*target)(Node);
22
        void (*clobber)(Node);
23
} Xinterface;
24
extern int     askregvar(Symbol, Symbol);
25
extern void    blkcopy(int, int, int, int, int, int[]);
26
extern unsigned emitasm(Node, int);
27
extern int     getregnum(Node);
28
extern int     mayrecalc(Node);
29
extern int     mkactual(int, int);
30
extern void    mkauto(Symbol);
31
extern Symbol  mkreg(char *, int, int, int);
32
extern Symbol  mkwildcard(Symbol *);
33
extern int     move(Node);
34
extern int     notarget(Node);
35
extern void    parseflags(int, char **);
36
extern int     range(Node, int, int);
37
extern unsigned regloc(Symbol);  /* omit */
38
extern void    rtarget(Node, int, Symbol);
39
extern void    setreg(Node, Symbol);
40
extern void    spill(unsigned, int, Node);
41
extern int     widens(Node);
42
 
43
extern int      argoffset, maxargoffset;
44
extern int      bflag, dflag;
45
extern int      dalign, salign;
46
extern int      framesize;
47
extern unsigned freemask[], usedmask[];
48
extern int      offset, maxoffset;
49
extern int      swap;
50
extern unsigned tmask[], vmask[];
51
typedef struct {
52
        unsigned listed:1;
53
        unsigned registered:1;
54
        unsigned emitted:1;
55
        unsigned copy:1;
56
        unsigned equatable:1;
57
        unsigned spills:1;
58
        unsigned mayrecalc:1;
59
        void *state;
60
        short inst;
61
        Node kids[3];
62
        Node prev, next;
63
        Node prevuse;
64
        short argno;
65
} Xnode;
66
typedef struct {
67
        Symbol vbl;
68
        short set;
69
        short number;
70
        unsigned mask;
71
} *Regnode;
72
enum { IREG=0, FREG=1 };
73
typedef struct {
74
        char *name;
75
        unsigned int eaddr;  /* omit */
76
        int offset;
77
        Node lastuse;
78
        int usecount;
79
        Regnode regnode;
80
        Symbol *wildcard;
81
} Xsymbol;
82
enum { RX=2 };
83
typedef struct {
84
        int offset;
85
        unsigned freemask[2];
86
} Env;
87
 
88
#define LBURG_MAX SHRT_MAX
89
 
90
enum { VREG=(44<<4) };
91
 
92
/* Exported for the front end */
93
extern void             blockbeg(Env *);
94
extern void             blockend(Env *);
95
extern void             emit(Node);
96
extern Node             gen(Node);
97
 
98
extern unsigned         emitbin(Node, int);
99
 
100
#ifdef NDEBUG
101
#define debug(x) (void)0
102
#else
103
#define debug(x) (void)(dflag&&((x),0))
104
#endif

powered by: WebSVN 2.1.0

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