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

Subversion Repositories thor

[/] [thor/] [trunk/] [FT64v5/] [software/] [CC64/] [source/] [Gen.h] - Blame information for rev 48

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 48 robfinch
#ifndef GEN_H
2
#define GEN_H
3
/*
4
 *      code generation structures and constants
5
 */
6
 
7
#define F_REG   1       /* register direct mode allowed */
8
#define F_BREG  2               /* branch register */
9
#define F_MEM   4       /* memory alterable modes allowed */
10
#define F_IMMED 8       /* immediate mode allowed */
11
#define F_ALT   7       /* alterable modes */
12
#define F_DALT  5       /* data alterable modes */
13
#define F_VOL   16      /* need volitile operand */
14
#define F_IMMED18       64      // 18-bit immediate constant
15
#define F_IMM0  128             /* immediate value 0 */
16
#define F_IMM8  256
17
#define F_IMMED13  512
18
#define F_FPREG 1024
19
#define F_IMM6  2048
20
#define BF_ASSIGN       4096
21
#define F_VREG  8192
22
#define F_VMREG 16384
23
#define F_ALL   (15|1024|F_VREG|F_VMREG)      /* all modes allowed */
24
#define F_NOVALUE 32768         /* dont need result value */
25
 
26
/*      addressing mode structure       */
27
/*
28
typedef AMODE {
29
        unsigned int mode : 6;
30
        unsigned int preg : 8;
31
        unsigned int sreg : 8;
32
        unsigned int segment : 4;
33
        unsigned int defseg : 1;
34
        unsigned int tempflag : 1;
35
        unsigned int type : 16;
36
        char FloatSize;
37
        unsigned int isUnsigned : 1;
38
        unsigned int lowhigh : 2;
39
        unsigned int isVolatile : 1;
40
        unsigned int isPascal : 1;
41
        unsigned int rshift : 8;
42
        short int deep;
43
        short int deep2;
44
        ENODE *offset;
45
        int8_t scale;
46
} AMODE;
47
*/
48
 
49
/*      output code structure   */
50
/*
51
OCODE {
52
        OCODE *fwd, *back, *comment;
53
        short opcode;
54
        short length;
55
        unsigned int isVolatile : 1;
56
        unsigned int isReferenced : 1;  // label is referenced by code
57
        unsigned int remove : 1;
58
        short pregreg;
59
        short predop;
60
        AMODE *oper1, *oper2, *oper3, *oper4;
61
};
62
*/
63
enum e_seg {
64
        op_ns = 0,
65
        op_ds = 1 << 8,
66
        op_ts = 2 << 8,
67
        op_bs = 3 << 8,
68
        op_rs = 4 << 8,
69
        op_es = 5 << 8,
70
        op_seg6 = 6 << 8,
71
        op_seg7 = 7 << 8,
72
        op_seg8 = 8 << 8,
73
        op_seg9 = 9 << 8,
74
        op_seg10 = 10 << 8,
75
        op_seg11 = 11 << 8,
76
        op_seg12 = 12 << 8,
77
        op_seg13 = 13 << 8,
78
        op_ss = 14 << 8,
79
        op_cs = 15 << 8
80
};
81
 
82
#define LR              1
83
#define CLR             11
84
 
85
#define BP              26
86
#define SP              27
87
 
88
#define DS              0x21
89
#define BSS             0x23
90
#define LS              0x29
91
#define XLS             0x2A
92
#define SS              0x2E
93
#define CS              0x2F
94
 
95
#endif

powered by: WebSVN 2.1.0

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