Subversion Repositories tendra.SVN

Rev

Rev 2 | Details | Compare with Previous | 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
$Author: release $
33
$Date: 1998/01/17 15:56:04 $
34
$Revision: 1.1.1.1 $
35
$Log: ibinasm.h,v $
36
 * Revision 1.1.1.1  1998/01/17  15:56:04  release
37
 * First version to be checked into rolling release.
38
 *
39
 * Revision 1.2  1995/10/17  16:36:35  currie
40
 * Nugatory
41
 *
42
 * Revision 1.1  1995/04/13  09:33:41  currie
43
 * Initial revision
44
 *
45
***********************************************************************/
46
/****************************************************************** 
47
               ibinasm.h
48
   Structures and constants for outputting binary assembly format
49
******************************************************************/
50
 
51
 
52
#ifndef IBINASM
53
#define IBINASM
54
 
55
typedef unsigned int  asmopcode;
56
typedef unsigned int  asmformat;
57
typedef unsigned int  asmreg;
58
typedef int asmint;
59
typedef int asmsym;
60
 
61
#define zero 0
62
#define float_register 32
63
#define xnoreg 64
64
 
65
#define icprestore 15 
66
	/* this is not used - here to retain same new_code.c for BIGEND */
67
 
68
#define ilabel		 0
69
#define isym		 1
70
#define iglobal		 2
71
#define iabort		 3
72
#define ialign		 4
73
#define iascii		 5
74
#define iasciiz		 6
75
#define ibyte		 7
76
#define icomm		 8
77
#define ilcomm		 9
78
#define idata		10
79
#define idouble		11
80
#define ifile		12
81
#define ifloat		13
82
#define ihalf		14
83
#define iline		15
84
#define idead		16
85
#define inop		17
86
#define ireserved1	18
87
#define ireserved2	19
88
#define ispace		20
89
#define itext		21
90
#define iword		22
91
#define iocode		23
92
#define iend		24
93
#define isdata		25
94
#define irdata		26
95
#define ient		27
96
#define iloc		28
97
#define ibgnb		29
98
#define iendb		30
99
#define iasm0		31
100
#define iset		32
101
#define iorg		33
102
#define irep		34
103
#define iendrep		35
104
#define ilab		36
105
#define ivreg		37
106
#define imask		38
107
#define ifmask		39
108
#define ierr		40
109
#define iglobabs	41
110
#define iverstamp	42
111
#define iframe		43
112
#define iextended	44
113
#define iextern		45
114
#define iaent		46
115
#define ioption		47
116
#define inoalias	48
117
#define ialias		49
118
 
119
#define igpword 	50
120
	/* unused except for PIC_code */
121
 
122
#define formrob	 0
123
#define formra	 1
124
#define formri	 2
125
#define formrrr	 3
126
#define formrri	 4
127
#define formrr	 5
128
#define forma	 6
129
#define formr	 7
130
#define formrrl	 8
131
#define formrl	 9
132
#define forml	10
133
#define forrr	11
134
#define formril	12
135
#define formi	13
136
 
137
#define set_undefined	 0
138
#define set_reorder	 1
139
#define set_noreorder	 2
140
#define set_macro	 3
141
#define set_nomacro	 4
142
#define set_at		 5
143
#define set_noat	 6
144
#define set_move	 7
145
#define set_nomove	 8
146
#define set_bopt	 9
147
#define set_nobopt	10
148
#define set_volatile	11
149
#define set_novolatile	12
150
 
151
#define o_undefined	 0
152
#define o_optimize	 1
153
#define o_other		 2
154
 
155
#define opt_none	 0
156
#define opt_int		 1
157
#define opt_float	 2
158
#define opt_string	 3
159
 
160
#define binasm_record_length 16
161
 
162
typedef union {
163
  char  data[binasm_record_length];
164
  struct {
165
    asmsym symno;
166
unsigned  fill0a:           10;
167
unsigned  asmtype:           6;
168
  }       common;
169
  struct {
170
    asmsym symno;
171
unsigned  fill0a:           10;
172
unsigned  asmtype:           6;
173
    unsigned  lexlev;
174
  }       ent;
175
  struct {
176
    asmsym symno;
177
unsigned  fill0a:           10;
178
unsigned  asmtype:           6;
179
              asmint frameoffset;
180
#ifndef V210
181
          asmreg framereg:           7;
182
          asmreg pcreg:           7;
183
#else
184
	  asmreg framereg:	8;
185
	  asmreg pcreg:		8;
186
#endif	  
187
 
188
  }       frame;
189
  struct {
190
    asmsym symno;
191
unsigned  fill0a:           10;
192
unsigned  asmtype:           6;
193
    unsigned  regmask;
194
              asmint regoffset;
195
  }       mask;
196
  struct {
197
    asmsym symno;
198
unsigned  fill0a:           10;
199
unsigned  asmtype:           6;
200
    int   majornumber;
201
    int   minornumber;
202
  }       verstamp;
203
  struct {
204
    asmsym symno;
205
unsigned  fill0a:           10;
206
unsigned  asmtype:           6;
207
    unsigned  filenumber;
208
    unsigned  linenumber;
209
  }       loc;
210
  struct {
211
    asmsym symno;
212
unsigned  fill0a:           10;
213
unsigned  asmtype:           6;
214
    unsigned  length;
215
    unsigned short  repeat;
216
  }       chars;
217
  struct {
218
    asmsym symno;
219
unsigned  fill0a:           10;
220
unsigned  asmtype:           6;
221
              asmint expression;
222
    unsigned short  repeat;
223
  }       value;
224
  struct {
225
    asmsym symno;
226
unsigned  fill0a:           10;
227
unsigned  asmtype:           6;
228
    short   optype;
229
    unsigned  fillword;
230
    unsigned  opint;
231
 
232
    /* ** fill in ** */
233
  }       option;
234
  struct {
235
    asmsym symno;
236
unsigned  fill0a:           10;
237
unsigned  asmtype:           6;
238
          asmreg basereg1:           7;
239
          asmreg basereg2:           7;
240
  }       alias;
241
  struct {
242
    asmsym symno;
243
unsigned  fill0a:           10;
244
unsigned  asmtype:           6;
245
unsigned  fill03:           6;
246
#ifndef V210
247
          asmopcode op:           8;
248
unsigned:           2;		/* to bring to wd bdry */
249
          asmreg reg1:           7;
250
          asmreg reg2:           7;
251
          asmformat form:           4;
252
          asmreg reg3:           7;
253
#else
254
          asmopcode op:	9;
255
unsigned: 1;
256
          asmreg reg1:           8;
257
          asmreg reg2:           8;
258
          asmformat form:           8;
259
          asmreg reg3:           8;
260
#endif
261
  }       rinst;
262
  struct {
263
    asmsym symno;
264
unsigned  fill0a:           10;
265
unsigned  asmtype:           6;
266
unsigned  fill03:           6;
267
#ifndef V210 
268
          asmopcode op:           8;
269
unsigned:           2;		/* to bring to wd bdry */
270
          asmreg reg1:           7;
271
          asmreg reg2:           7;
272
          asmformat form:           4;
273
#else
274
         asmopcode op:	9;
275
unsigned: 1;
276
          asmreg reg1:           8;
277
          asmreg reg2:           8;
278
          asmformat form:           8;
279
#endif
280
              asmint immediate;
281
  }       iinst;
282
} binasm;
283
 
284
#endif
285
 
286