2 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
3 * See the copyright notice in the ACK home directory, in the file "Copyright".
5 #define RCSID1 "$Id: mach1.c,v 0.3 1994/06/24 13:56:14 ceriel Exp $"
8 ** Zilog z8000 machine dependent C declarations
19 #define TYPE_11a23 IR | DA | X
20 #define TYPE_11b23 REG | IR | DA | X
21 #define TYPE_12 REG | IR | DA | X
22 #define TYPE_1263 REG | IR | DA | X
23 #define TYPE_jp IR | DA | X
24 #define TYPE_21a REG | IR | DA | X
26 #define TYPE_2151 REG | IM | IR | DA | X
27 #define TYPE_pop REG | IR | DA | X
28 #define TYPE_push REG | IM | IR | DA | X
29 #define TYPE_ldm IR | DA | X
30 #define TYPE_ld IR | DA | X
39 #define low3(z) ( ((short) z) & 07 )
40 #define low4(z) ( ((short) z) & 017 )
41 #define low5(z) ( ((short) z) & 037 )
42 #define low7(z) ( ((short) z) & 0177 )
43 #define low8(z) ( ((short) z) & 0377 )
44 #define low11(z) ( ((short) z) & 03777 )
45 #define low12(z) ( ((short) z) & 07777 )
46 #define low15(z) ( ((short) z) & 077777 )
47 #define fit3(z) ( low3(z) == (z) )
48 #define fit4(z) ( low4(z) == (z) )
49 #define fit5(z) ( low5(z) == (z) )
50 #define fit7(z) ( low7(z) == (z) )
51 #define fit8(z) ( low8(z) == (z) )
52 #define fits8(z) ( low7(z) == (z) || low7(-z-1) == (-z-1) )
53 #define fits12(z) ( low11(z) == (z) || low11(-z-1) == (-z-1) )
54 #define fits16(z) ( low15(z) == (z) || low15(-z-1) == (-z-1) )
56 #define bitset(x,b) ( ((int) x) & ((int) 1<<b) ) /*bit b set in x?*/
58 typedef struct address ATYPE;
65 extern expr_t displ; /* never more than 16 bits */
66 extern short index; /* never more than 16 bits */
69 extern short modetbl[ 5 ];
71 short modetbl[5] = { 8, 0, 0, 4, 4 };
72 /* Modes for REG, IM, IR, DA, X. e.g. modetbl[ 2log REG ]
73 ** is the mode if operand is of type REG.
74 ** No entries for RA, BA and BX are needed.
78 extern short oprtype[ 2 ];
79 extern expr_t addr_inf; /* .val (address) up to 23 bits! */
82 #define regerr() serror("register error")