Subversion Repositories tendra.SVN

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 7u83 1
/*
2
    		 Crown Copyright (c) 1997
3
 
4
    This TenDRA(r) Computer Program is subject to Copyright
5
    owned by the United Kingdom Secretary of State for Defence
6
    acting through the Defence Evaluation and Research Agency
7
    (DERA).  It is made available to Recipients with a
8
    royalty-free licence for its use, reproduction, transfer
9
    to other parties and amendment for any purpose not excluding
10
    product development provided that any such use et cetera
11
    shall be deemed to be acceptance of the following conditions:-
12
 
13
        (1) Its Recipients shall ensure that this Notice is
14
        reproduced upon any copies or amended versions of it;
15
 
16
        (2) Any amended version of it shall be clearly marked to
17
        show both the nature of and the organisation responsible
18
        for the relevant amendment or amendments;
19
 
20
        (3) Its onward transfer from a recipient to another
21
        party shall be deemed to be that party's acceptance of
22
        these conditions;
23
 
24
        (4) DERA gives no warranty or assurance as to its
25
        quality or suitability for any purpose and DERA accepts
26
        no liability whatsoever in relation to any use to which
27
        it may be put.
28
*/
29
 
30
 
31
/*
32
$Log: addrtypes.h,v $
33
 * Revision 1.1.1.1  1998/01/17  15:56:02  release
34
 * First version to be checked into rolling release.
35
 *
36
 * Revision 1.2  1995/12/18  13:10:54  wfs
37
 * Put hppatrans uder cvs control. Major Changes made since last release
38
 * include:
39
 * (i) PIC code generation.
40
 * (ii) Profiling.
41
 * (iii) Dynamic Initialization.
42
 * (iv) Debugging of Exception Handling and Diagnostics.
43
 *
44
 * Revision 5.0  1995/08/25  13:42:58  wfs
45
 * Preperation for August 25 Glue release
46
 *
47
 * Revision 4.0  1995/08/25  13:34:00  wfs
48
 * *** empty log message ***
49
 *
50
 * Revision 4.0  1995/08/25  13:34:00  wfs
51
 * *** empty log message ***
52
 *
53
 * Revision 3.4  1995/08/25  10:44:05  wfs
54
 * *** empty log message ***
55
 *
56
 * Revision 3.4  1995/08/25  10:44:05  wfs
57
 * *** empty log message ***
58
 *
59
 * Revision 3.1  95/04/10  16:25:18  16:25:18  wfs (William Simmonds)
60
 * Apr95 tape version.
61
 * 
62
 * Revision 3.0  95/03/30  11:12:22  11:12:22  wfs (William Simmonds)
63
 * Mar95 tape version with CRCR95_178 bug fix.
64
 * 
65
 * Revision 2.0  95/03/15  15:22:22  15:22:22  wfs (William Simmonds)
66
 * spec 3.1 changes implemented, tests outstanding.
67
 * 
68
 * Revision 1.1  95/01/11  13:35:41  13:35:41  wfs (William Simmonds)
69
 * Initial revision
70
 * 
71
*/
72
 
73
 
74
#ifndef ADDRTYPES_INCLUDED
75
#define ADDRTYPES_INCLUDED
76
 
77
#include "common_types.h"
78
#include "proctypes.h"
79
 
80
#define NOREG	100
81
 
82
 
83
/*
84
    TYPE DEFINITIONS
85
*/
86
 
87
typedef struct {
88
    int lab ;
89
    int regmove ;
90
} makeans ;
91
 
92
typedef struct {
93
    int base ;
94
    long offset ;
95
} baseoff ;
96
 
97
typedef struct {
98
    baseoff b ;
99
    bool adval ;
100
} instore ;
101
 
102
typedef struct {
103
    int fr ;
104
    bool dble ;
105
} freg ;
106
 
107
typedef struct {
108
    int *fr ;
109
    bool dble ;
110
} somefreg ;
111
 
112
typedef struct {
113
    int *r ;
114
} somereg ;
115
 
116
typedef struct {
117
    enum ansdiscrim {
118
	inreg,
119
	infreg,
120
	notinreg,
121
	bitad,
122
	insomereg,
123
	insomefreg
124
    } d ;
125
    union {
126
	int regans ;
127
	freg fregans ;
128
	instore instoreans ;
129
	instore bitadans ;
130
	somefreg somefregans ;
131
	somereg someregans ;
132
    } val ;
133
} ans ;
134
 
135
typedef struct {
136
    ans answhere ;
137
    ash ashwhere ;
138
} where ;
139
 
140
typedef struct {
141
    long maxi ;
142
    long mini ;
143
    char *fmt ;
144
} mm ;
145
 
146
struct regcell_t {int regcell_key;
147
			/* 0 - indetermined
148
			   1 - has first_dest, not second
149
			   2 - has second_dest, not first
150
			   3 - has first_dest and second_dest
151
			   4 - overdetermined
152
			*/
153
                  exp first_dest;
154
                  int first_size;
155
                  exp second_dest;
156
                  int second_size;
157
                 };
158
 
159
typedef struct regcell_t regcell;
160
 
161
typedef regcell reg_record[7];
162
 
163
typedef struct outofline_t {
164
	struct outofline_t * next;
165
	where dest;
166
	exp body;
167
	int labno;
168
	int repeat_level;
169
        space sp;
170
        exp jr;
171
} outofline;
172
 
173
 
174
#define BITS2BYTES(x) 	((x) >> 3)
175
#define BYTES2BITS(x) 	((x) << 3)
176
 
177
 
178
 
179
 
180
 
181
/*
182
    MACROS FOR SETTING AND ADDRESSING THE COMPONENTS OF AN ANS
183
*/
184
 
185
#define discrim( x )		( x ).d
186
#define regalt( x )		( x ).val.regans
187
#define fregalt( x )		( x ).val.fregans
188
#define insalt( x )		( x ).val.instoreans
189
#define bitadalt( x )		( x ).val.bitadans
190
#define someregalt( x )		( x ).val.someregans.r
191
#define somefregalt( x )	( x ).val.somefregans
192
 
193
#define setregalt( x, y )	( x ).d = inreg ; regalt ( x ) = ( y )
194
#define setfregalt( x, y )	( x ).d = infreg ; fregalt ( x ) = ( y )
195
#define setinsalt( x, y )	( x ).d = notinreg ; insalt ( x ) = ( y )
196
#define setbitadalt( x, y )	( x ).d = bitad ; bitadalt ( x ) = ( y )
197
#define setsomeregalt( x, y )	( x ).d = insomereg ; someregalt ( x ) = ( y )
198
#define setsomefregalt( x, y )	( x ).d = insomefreg ; somefregalt ( x ) = ( y )
199
 
200
 
201
 
202
#endif
203
 
204
 
205
 
206
 
207