rl78-decode.opc revision 1.1.1.1.8.2 1 1.1.1.1.8.2 tls /* -*- c -*- */
2 1.1.1.1.8.2 tls #include "sysdep.h"
3 1.1.1.1.8.2 tls #include <stdio.h>
4 1.1.1.1.8.2 tls #include <stdlib.h>
5 1.1.1.1.8.2 tls #include <string.h>
6 1.1.1.1.8.2 tls #include "ansidecl.h"
7 1.1.1.1.8.2 tls #include "opcode/rl78.h"
8 1.1.1.1.8.2 tls
9 1.1.1.1.8.2 tls static int trace = 0;
10 1.1.1.1.8.2 tls
11 1.1.1.1.8.2 tls typedef struct
12 1.1.1.1.8.2 tls {
13 1.1.1.1.8.2 tls RL78_Opcode_Decoded * rl78;
14 1.1.1.1.8.2 tls int (* getbyte)(void *);
15 1.1.1.1.8.2 tls void * ptr;
16 1.1.1.1.8.2 tls unsigned char * op;
17 1.1.1.1.8.2 tls } LocalData;
18 1.1.1.1.8.2 tls
19 1.1.1.1.8.2 tls #define ID(x) rl78->id = RLO_##x, rl78->lineno = __LINE__
20 1.1.1.1.8.2 tls #define OP(n,t,r,a) (rl78->op[n].type = t, \
21 1.1.1.1.8.2 tls rl78->op[n].reg = r, \
22 1.1.1.1.8.2 tls rl78->op[n].addend = a )
23 1.1.1.1.8.2 tls #define OPX(n,t,r1,r2,a) \
24 1.1.1.1.8.2 tls (rl78->op[n].type = t, \
25 1.1.1.1.8.2 tls rl78->op[n].reg = r1, \
26 1.1.1.1.8.2 tls rl78->op[n].reg2 = r2, \
27 1.1.1.1.8.2 tls rl78->op[n].addend = a )
28 1.1.1.1.8.2 tls
29 1.1.1.1.8.2 tls #define W() rl78->size = RL78_Word
30 1.1.1.1.8.2 tls
31 1.1.1.1.8.2 tls #define AU ATTRIBUTE_UNUSED
32 1.1.1.1.8.2 tls #define GETBYTE() (ld->op [ld->rl78->n_bytes++] = ld->getbyte (ld->ptr))
33 1.1.1.1.8.2 tls #define B ((unsigned long) GETBYTE())
34 1.1.1.1.8.2 tls
35 1.1.1.1.8.2 tls #define SYNTAX(x) rl78->syntax = x
36 1.1.1.1.8.2 tls
37 1.1.1.1.8.2 tls #define UNSUPPORTED() \
38 1.1.1.1.8.2 tls rl78->syntax = "*unknown*"
39 1.1.1.1.8.2 tls
40 1.1.1.1.8.2 tls #define RB(x) ((x)+RL78_Reg_X)
41 1.1.1.1.8.2 tls #define RW(x) ((x)+RL78_Reg_AX)
42 1.1.1.1.8.2 tls
43 1.1.1.1.8.2 tls #define Fz rl78->flags = RL78_PSW_Z
44 1.1.1.1.8.2 tls #define Fza rl78->flags = RL78_PSW_Z | RL78_PSW_AC
45 1.1.1.1.8.2 tls #define Fzc rl78->flags = RL78_PSW_Z | RL78_PSW_CY
46 1.1.1.1.8.2 tls #define Fzac rl78->flags = RL78_PSW_Z | RL78_PSW_AC | RL78_PSW_CY
47 1.1.1.1.8.2 tls #define Fa rl78->flags = RL78_PSW_AC
48 1.1.1.1.8.2 tls #define Fc rl78->flags = RL78_PSW_CY
49 1.1.1.1.8.2 tls #define Fac rl78->flags = RL78_PSW_AC | RL78_PSW_CY
50 1.1.1.1.8.2 tls
51 1.1.1.1.8.2 tls #define IMMU(bytes) immediate (bytes, 0, ld)
52 1.1.1.1.8.2 tls #define IMMS(bytes) immediate (bytes, 1, ld)
53 1.1.1.1.8.2 tls
54 1.1.1.1.8.2 tls static int
55 1.1.1.1.8.2 tls immediate (int bytes, int sign_extend, LocalData * ld)
56 1.1.1.1.8.2 tls {
57 1.1.1.1.8.2 tls unsigned long i = 0;
58 1.1.1.1.8.2 tls
59 1.1.1.1.8.2 tls switch (bytes)
60 1.1.1.1.8.2 tls {
61 1.1.1.1.8.2 tls case 1:
62 1.1.1.1.8.2 tls i |= B;
63 1.1.1.1.8.2 tls if (sign_extend && (i & 0x80))
64 1.1.1.1.8.2 tls i -= 0x100;
65 1.1.1.1.8.2 tls break;
66 1.1.1.1.8.2 tls case 2:
67 1.1.1.1.8.2 tls i |= B;
68 1.1.1.1.8.2 tls i |= B << 8;
69 1.1.1.1.8.2 tls if (sign_extend && (i & 0x8000))
70 1.1.1.1.8.2 tls i -= 0x10000;
71 1.1.1.1.8.2 tls break;
72 1.1.1.1.8.2 tls case 3:
73 1.1.1.1.8.2 tls i |= B;
74 1.1.1.1.8.2 tls i |= B << 8;
75 1.1.1.1.8.2 tls i |= B << 16;
76 1.1.1.1.8.2 tls if (sign_extend && (i & 0x800000))
77 1.1.1.1.8.2 tls i -= 0x1000000;
78 1.1.1.1.8.2 tls break;
79 1.1.1.1.8.2 tls default:
80 1.1.1.1.8.2 tls fprintf (stderr, "Programmer error: immediate() called with invalid byte count %d\n", bytes);
81 1.1.1.1.8.2 tls abort();
82 1.1.1.1.8.2 tls }
83 1.1.1.1.8.2 tls return i;
84 1.1.1.1.8.2 tls }
85 1.1.1.1.8.2 tls
86 1.1.1.1.8.2 tls #define DC(c) OP (0, RL78_Operand_Immediate, 0, c)
87 1.1.1.1.8.2 tls #define DR(r) OP (0, RL78_Operand_Register, RL78_Reg_##r, 0)
88 1.1.1.1.8.2 tls #define DRB(r) OP (0, RL78_Operand_Register, RB(r), 0)
89 1.1.1.1.8.2 tls #define DRW(r) OP (0, RL78_Operand_Register, RW(r), 0)
90 1.1.1.1.8.2 tls #define DM(r,a) OP (0, RL78_Operand_Indirect, RL78_Reg_##r, a)
91 1.1.1.1.8.2 tls #define DM2(r1,r2,a) OPX (0, RL78_Operand_Indirect, RL78_Reg_##r1, RL78_Reg_##r2, a)
92 1.1.1.1.8.2 tls #define DE() rl78->op[0].use_es = 1
93 1.1.1.1.8.2 tls #define DB(b) set_bit (rl78->op, b)
94 1.1.1.1.8.2 tls #define DCY() DR(PSW); DB(0)
95 1.1.1.1.8.2 tls #define DPUSH() OP (0, RL78_Operand_PreDec, RL78_Reg_SP, 0);
96 1.1.1.1.8.2 tls
97 1.1.1.1.8.2 tls #define SC(c) OP (1, RL78_Operand_Immediate, 0, c)
98 1.1.1.1.8.2 tls #define SR(r) OP (1, RL78_Operand_Register, RL78_Reg_##r, 0)
99 1.1.1.1.8.2 tls #define SRB(r) OP (1, RL78_Operand_Register, RB(r), 0)
100 1.1.1.1.8.2 tls #define SRW(r) OP (1, RL78_Operand_Register, RW(r), 0)
101 1.1.1.1.8.2 tls #define SM(r,a) OP (1, RL78_Operand_Indirect, RL78_Reg_##r, a)
102 1.1.1.1.8.2 tls #define SM2(r1,r2,a) OPX (1, RL78_Operand_Indirect, RL78_Reg_##r1, RL78_Reg_##r2, a)
103 1.1.1.1.8.2 tls #define SE() rl78->op[1].use_es = 1
104 1.1.1.1.8.2 tls #define SB(b) set_bit (rl78->op+1, b)
105 1.1.1.1.8.2 tls #define SCY() SR(PSW); SB(0)
106 1.1.1.1.8.2 tls #define COND(c) rl78->op[1].condition = RL78_Condition_##c
107 1.1.1.1.8.2 tls #define SPOP() OP (1, RL78_Operand_PostInc, RL78_Reg_SP, 0);
108 1.1.1.1.8.2 tls
109 1.1.1.1.8.2 tls static void
110 1.1.1.1.8.2 tls set_bit (RL78_Opcode_Operand *op, int bit)
111 1.1.1.1.8.2 tls {
112 1.1.1.1.8.2 tls op->bit_number = bit;
113 1.1.1.1.8.2 tls switch (op->type) {
114 1.1.1.1.8.2 tls case RL78_Operand_Register:
115 1.1.1.1.8.2 tls op->type = RL78_Operand_Bit;
116 1.1.1.1.8.2 tls break;
117 1.1.1.1.8.2 tls case RL78_Operand_Indirect:
118 1.1.1.1.8.2 tls op->type = RL78_Operand_BitIndirect;
119 1.1.1.1.8.2 tls break;
120 1.1.1.1.8.2 tls default:
121 1.1.1.1.8.2 tls break;
122 1.1.1.1.8.2 tls }
123 1.1.1.1.8.2 tls }
124 1.1.1.1.8.2 tls
125 1.1.1.1.8.2 tls static int
126 1.1.1.1.8.2 tls saddr (int x)
127 1.1.1.1.8.2 tls {
128 1.1.1.1.8.2 tls if (x < 0x20)
129 1.1.1.1.8.2 tls return 0xfff00 + x;
130 1.1.1.1.8.2 tls return 0xffe00 + x;
131 1.1.1.1.8.2 tls }
132 1.1.1.1.8.2 tls
133 1.1.1.1.8.2 tls static int
134 1.1.1.1.8.2 tls sfr (int x)
135 1.1.1.1.8.2 tls {
136 1.1.1.1.8.2 tls return 0xfff00 + x;
137 1.1.1.1.8.2 tls }
138 1.1.1.1.8.2 tls
139 1.1.1.1.8.2 tls #define SADDR saddr (IMMU (1))
140 1.1.1.1.8.2 tls #define SFR sfr (IMMU (1))
141 1.1.1.1.8.2 tls
142 1.1.1.1.8.2 tls int
143 1.1.1.1.8.2 tls rl78_decode_opcode (unsigned long pc AU,
144 1.1.1.1.8.2 tls RL78_Opcode_Decoded * rl78,
145 1.1.1.1.8.2 tls int (* getbyte)(void *),
146 1.1.1.1.8.2 tls void * ptr)
147 1.1.1.1.8.2 tls {
148 1.1.1.1.8.2 tls LocalData lds, * ld = &lds;
149 1.1.1.1.8.2 tls unsigned char op_buf[20] = {0};
150 1.1.1.1.8.2 tls unsigned char *op = op_buf;
151 1.1.1.1.8.2 tls int op0, op1;
152 1.1.1.1.8.2 tls
153 1.1.1.1.8.2 tls lds.rl78 = rl78;
154 1.1.1.1.8.2 tls lds.getbyte = getbyte;
155 1.1.1.1.8.2 tls lds.ptr = ptr;
156 1.1.1.1.8.2 tls lds.op = op;
157 1.1.1.1.8.2 tls
158 1.1.1.1.8.2 tls memset (rl78, 0, sizeof (*rl78));
159 1.1.1.1.8.2 tls
160 1.1.1.1.8.2 tls start_again:
161 1.1.1.1.8.2 tls
162 1.1.1.1.8.2 tls /* Byte registers, not including A. */
163 1.1.1.1.8.2 tls /** VARY rba 000 010 011 100 101 110 111 */
164 1.1.1.1.8.2 tls /* Word registers, not including AX. */
165 1.1.1.1.8.2 tls /** VARY ra 01 10 11 */
166 1.1.1.1.8.2 tls
167 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
168 1.1.1.1.8.2 tls /* ES: prefix */
169 1.1.1.1.8.2 tls
170 1.1.1.1.8.2 tls /** 0001 0001 es: */
171 1.1.1.1.8.2 tls DE(); SE();
172 1.1.1.1.8.2 tls op ++;
173 1.1.1.1.8.2 tls pc ++;
174 1.1.1.1.8.2 tls goto start_again;
175 1.1.1.1.8.2 tls
176 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
177 1.1.1.1.8.2 tls
178 1.1.1.1.8.2 tls /** 0000 1111 add %0, %e1%!1 */
179 1.1.1.1.8.2 tls ID(add); DR(A); SM(None, IMMU(2)); Fzac;
180 1.1.1.1.8.2 tls
181 1.1.1.1.8.2 tls /** 0000 1101 add %0, %e1%1 */
182 1.1.1.1.8.2 tls ID(add); DR(A); SM(HL, 0); Fzac;
183 1.1.1.1.8.2 tls
184 1.1.1.1.8.2 tls /** 0110 0001 1000 000 add %0, %e1%1 */
185 1.1.1.1.8.2 tls ID(add); DR(A); SM2(HL, B, 0); Fzac;
186 1.1.1.1.8.2 tls
187 1.1.1.1.8.2 tls /** 0000 1110 add %0, %e1%1 */
188 1.1.1.1.8.2 tls ID(add); DR(A); SM(HL, IMMU(1)); Fzac;
189 1.1.1.1.8.2 tls
190 1.1.1.1.8.2 tls /** 0110 0001 1000 0010 add %0, %e1%1 */
191 1.1.1.1.8.2 tls ID(add); DR(A); SM2(HL, C, 0); Fzac;
192 1.1.1.1.8.2 tls
193 1.1.1.1.8.2 tls /** 0000 1100 add %0, #%1 */
194 1.1.1.1.8.2 tls ID(add); DR(A); SC(IMMU(1)); Fzac;
195 1.1.1.1.8.2 tls
196 1.1.1.1.8.2 tls /** 0110 0001 0000 1rba add %0, %1 */
197 1.1.1.1.8.2 tls ID(add); DR(A); SRB(rba); Fzac;
198 1.1.1.1.8.2 tls
199 1.1.1.1.8.2 tls /** 0000 1011 add %0, %1 */
200 1.1.1.1.8.2 tls ID(add); DR(A); SM(None, SADDR); Fzac;
201 1.1.1.1.8.2 tls
202 1.1.1.1.8.2 tls /** 0110 0001 0000 0reg add %0, %1 */
203 1.1.1.1.8.2 tls ID(add); DRB(reg); SR(A); Fzac;
204 1.1.1.1.8.2 tls
205 1.1.1.1.8.2 tls /** 0000 1010 add %0, #%1 */
206 1.1.1.1.8.2 tls ID(add); DM(None, SADDR); SC(IMMU(1)); Fzac;
207 1.1.1.1.8.2 tls
208 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
209 1.1.1.1.8.2 tls
210 1.1.1.1.8.2 tls /** 0001 1111 addc %0, %e1%!1 */
211 1.1.1.1.8.2 tls ID(addc); DR(A); SM(None, IMMU(2)); Fzac;
212 1.1.1.1.8.2 tls
213 1.1.1.1.8.2 tls /** 0001 1101 addc %0, %e1%1 */
214 1.1.1.1.8.2 tls ID(addc); DR(A); SM(HL, 0); Fzac;
215 1.1.1.1.8.2 tls
216 1.1.1.1.8.2 tls /** 0110 0001 1001 0000 addc %0, %e1%1 */
217 1.1.1.1.8.2 tls ID(addc); DR(A); SM2(HL, B, 0); Fzac;
218 1.1.1.1.8.2 tls
219 1.1.1.1.8.2 tls /** 0110 0001 1001 0010 addc %0, %e1%1 */
220 1.1.1.1.8.2 tls ID(addc); DR(A); SM2(HL, C, 0); Fzac;
221 1.1.1.1.8.2 tls
222 1.1.1.1.8.2 tls /** 0001 1110 addc %0, %e1%1 */
223 1.1.1.1.8.2 tls ID(addc); DR(A); SM(HL, IMMU(1)); Fzac;
224 1.1.1.1.8.2 tls
225 1.1.1.1.8.2 tls /** 0001 1100 addc %0, #%1 */
226 1.1.1.1.8.2 tls ID(addc); DR(A); SC(IMMU(1)); Fzac;
227 1.1.1.1.8.2 tls
228 1.1.1.1.8.2 tls /** 0110 0001 0001 1rba addc %0, %1 */
229 1.1.1.1.8.2 tls ID(addc); DR(A); SRB(rba); Fzac;
230 1.1.1.1.8.2 tls
231 1.1.1.1.8.2 tls /** 0110 0001 0001 0reg addc %0, %1 */
232 1.1.1.1.8.2 tls ID(addc); DRB(reg); SR(A); Fzac;
233 1.1.1.1.8.2 tls
234 1.1.1.1.8.2 tls /** 0001 1011 addc %0, %1 */
235 1.1.1.1.8.2 tls ID(addc); DR(A); SM(None, SADDR); Fzac;
236 1.1.1.1.8.2 tls
237 1.1.1.1.8.2 tls /** 0001 1010 addc %0, #%1 */
238 1.1.1.1.8.2 tls ID(addc); DM(None, SADDR); SC(IMMU(1)); Fzac;
239 1.1.1.1.8.2 tls
240 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
241 1.1.1.1.8.2 tls
242 1.1.1.1.8.2 tls /** 0000 0010 addw %0, %e1%!1 */
243 1.1.1.1.8.2 tls ID(add); W(); DR(AX); SM(None, IMMU(2)); Fzac;
244 1.1.1.1.8.2 tls
245 1.1.1.1.8.2 tls /** 0110 0001 0000 1001 addw %0, %e1%1 */
246 1.1.1.1.8.2 tls ID(add); W(); DR(AX); SM(HL, IMMU(1)); Fzac;
247 1.1.1.1.8.2 tls
248 1.1.1.1.8.2 tls /** 0000 0100 addw %0, #%1 */
249 1.1.1.1.8.2 tls ID(add); W(); DR(AX); SC(IMMU(2)); Fzac;
250 1.1.1.1.8.2 tls
251 1.1.1.1.8.2 tls /** 0000 0rw1 addw %0, %1 */
252 1.1.1.1.8.2 tls ID(add); W(); DR(AX); SRW(rw); Fzac;
253 1.1.1.1.8.2 tls
254 1.1.1.1.8.2 tls /** 0000 0110 addw %0, %1 */
255 1.1.1.1.8.2 tls ID(add); W(); DR(AX); SM(None, SADDR); Fzac;
256 1.1.1.1.8.2 tls
257 1.1.1.1.8.2 tls /** 0001 0000 addw %0, #%1 */
258 1.1.1.1.8.2 tls ID(add); W(); DR(SP); SC(IMMU(1)); Fzac;
259 1.1.1.1.8.2 tls
260 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
261 1.1.1.1.8.2 tls
262 1.1.1.1.8.2 tls /** 0101 1111 and %0, %e1%!1 */
263 1.1.1.1.8.2 tls ID(and); DR(A); SM(None, IMMU(2)); Fz;
264 1.1.1.1.8.2 tls
265 1.1.1.1.8.2 tls /** 0101 1101 and %0, %e1%1 */
266 1.1.1.1.8.2 tls ID(and); DR(A); SM(HL, 0); Fz;
267 1.1.1.1.8.2 tls
268 1.1.1.1.8.2 tls /** 0110 0001 1101 0000 and %0, %e1%1 */
269 1.1.1.1.8.2 tls ID(and); DR(A); SM2(HL, B, 0); Fz;
270 1.1.1.1.8.2 tls
271 1.1.1.1.8.2 tls /** 0101 1110 and %0, %e1%1 */
272 1.1.1.1.8.2 tls ID(and); DR(A); SM(HL, IMMU(1)); Fz;
273 1.1.1.1.8.2 tls
274 1.1.1.1.8.2 tls /** 0110 0001 1101 0010 and %0, %e1%1 */
275 1.1.1.1.8.2 tls ID(and); DR(A); SM2(HL, C, 0); Fz;
276 1.1.1.1.8.2 tls
277 1.1.1.1.8.2 tls /** 0101 1100 and %0, #%1 */
278 1.1.1.1.8.2 tls ID(and); DR(A); SC(IMMU(1)); Fz;
279 1.1.1.1.8.2 tls
280 1.1.1.1.8.2 tls /** 0110 0001 0101 1rba and %0, %1 */
281 1.1.1.1.8.2 tls ID(and); DR(A); SRB(rba); Fz;
282 1.1.1.1.8.2 tls
283 1.1.1.1.8.2 tls /** 0110 0001 0101 0reg and %0, %1 */
284 1.1.1.1.8.2 tls ID(and); DRB(reg); SR(A); Fz;
285 1.1.1.1.8.2 tls
286 1.1.1.1.8.2 tls /** 0101 1011 and %0, %1 */
287 1.1.1.1.8.2 tls ID(and); DR(A); SM(None, SADDR); Fz;
288 1.1.1.1.8.2 tls
289 1.1.1.1.8.2 tls /** 0101 1010 and %0, #%1 */
290 1.1.1.1.8.2 tls ID(and); DM(None, SADDR); SC(IMMU(1)); Fz;
291 1.1.1.1.8.2 tls
292 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
293 1.1.1.1.8.2 tls
294 1.1.1.1.8.2 tls /** 0111 0001 1bit 0101 and1 cy, %e1%1 */
295 1.1.1.1.8.2 tls ID(and); DCY(); SM(HL, 0); SB(bit);
296 1.1.1.1.8.2 tls
297 1.1.1.1.8.2 tls /** 0111 0001 1bit 1101 and1 cy, %1 */
298 1.1.1.1.8.2 tls ID(and); DCY(); SR(A); SB(bit);
299 1.1.1.1.8.2 tls
300 1.1.1.1.8.2 tls /** 0111 0001 0bit 1101 and1 cy, %s1 */
301 1.1.1.1.8.2 tls ID(and); DCY(); SM(None, SFR); SB(bit);
302 1.1.1.1.8.2 tls
303 1.1.1.1.8.2 tls /** 0111 0001 0bit 0101 and1 cy, %s1 */
304 1.1.1.1.8.2 tls ID(and); DCY(); SM(None, SADDR); SB(bit);
305 1.1.1.1.8.2 tls
306 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
307 1.1.1.1.8.2 tls
308 1.1.1.1.8.2 tls /* Note that the branch insns need to be listed before the shift
309 1.1.1.1.8.2 tls ones, as "shift count of zero" means "branch insn" */
310 1.1.1.1.8.2 tls
311 1.1.1.1.8.2 tls /** 1101 1100 bc $%a0 */
312 1.1.1.1.8.2 tls ID(branch_cond); DC(pc+IMMS(1)+2); SR(None); COND(C);
313 1.1.1.1.8.2 tls
314 1.1.1.1.8.2 tls /** 1101 1110 bnc $%a0 */
315 1.1.1.1.8.2 tls ID(branch_cond); DC(pc+IMMS(1)+2); SR(None); COND(NC);
316 1.1.1.1.8.2 tls
317 1.1.1.1.8.2 tls /** 0110 0001 1100 0011 bh $%a0 */
318 1.1.1.1.8.2 tls ID(branch_cond); DC(pc+IMMS(1)+3); SR(None); COND(H);
319 1.1.1.1.8.2 tls
320 1.1.1.1.8.2 tls /** 0110 0001 1101 0011 bnh $%a0 */
321 1.1.1.1.8.2 tls ID(branch_cond); DC(pc+IMMS(1)+3); SR(None); COND(NH);
322 1.1.1.1.8.2 tls
323 1.1.1.1.8.2 tls /** 1101 1101 bz $%a0 */
324 1.1.1.1.8.2 tls ID(branch_cond); DC(pc+IMMS(1)+2); SR(None); COND(Z);
325 1.1.1.1.8.2 tls
326 1.1.1.1.8.2 tls /** 1101 1111 bnz $%a0 */
327 1.1.1.1.8.2 tls ID(branch_cond); DC(pc+IMMS(1)+2); SR(None); COND(NZ);
328 1.1.1.1.8.2 tls
329 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
330 1.1.1.1.8.2 tls
331 1.1.1.1.8.2 tls /** 0011 0001 1bit 0101 bf %e1%1, $%a0 */
332 1.1.1.1.8.2 tls ID(branch_cond); DC(pc+IMMS(1)+3); SM(HL,0); SB(bit); COND(F);
333 1.1.1.1.8.2 tls
334 1.1.1.1.8.2 tls /** 0011 0001 0bit 0101 bf %1, $%a0 */
335 1.1.1.1.8.2 tls ID(branch_cond); DC(pc+IMMS(1)+3); SR(A); SB(bit); COND(F);
336 1.1.1.1.8.2 tls
337 1.1.1.1.8.2 tls /** 0011 0001 1bit 0100 bf %s1, $%a0 */
338 1.1.1.1.8.2 tls ID(branch_cond); SM(None, SFR); SB(bit); DC(pc+IMMS(1)+4); COND(F);
339 1.1.1.1.8.2 tls
340 1.1.1.1.8.2 tls /** 0011 0001 0bit 0100 bf %s1, $%a0 */
341 1.1.1.1.8.2 tls ID(branch_cond); SM(None, SADDR); SB(bit); DC(pc+IMMS(1)+4); COND(F);
342 1.1.1.1.8.2 tls
343 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
344 1.1.1.1.8.2 tls
345 1.1.1.1.8.2 tls /** 1110 1100 br !%!a0 */
346 1.1.1.1.8.2 tls ID(branch); DC(IMMU(3));
347 1.1.1.1.8.2 tls
348 1.1.1.1.8.2 tls /** 1110 1101 br %!a0 */
349 1.1.1.1.8.2 tls ID(branch); DC(IMMU(2));
350 1.1.1.1.8.2 tls
351 1.1.1.1.8.2 tls /** 1110 1110 br $%!a0 */
352 1.1.1.1.8.2 tls ID(branch); DC(pc+IMMS(2)+3);
353 1.1.1.1.8.2 tls
354 1.1.1.1.8.2 tls /** 1110 1111 br $%a0 */
355 1.1.1.1.8.2 tls ID(branch); DC(pc+IMMS(1)+2);
356 1.1.1.1.8.2 tls
357 1.1.1.1.8.2 tls /** 0110 0001 1100 1011 br ax */
358 1.1.1.1.8.2 tls ID(branch); DR(AX);
359 1.1.1.1.8.2 tls
360 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
361 1.1.1.1.8.2 tls
362 1.1.1.1.8.2 tls /** 1111 1111 brk1 */
363 1.1.1.1.8.2 tls ID(break);
364 1.1.1.1.8.2 tls
365 1.1.1.1.8.2 tls /** 0110 0001 1100 1100 brk */
366 1.1.1.1.8.2 tls ID(break);
367 1.1.1.1.8.2 tls
368 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
369 1.1.1.1.8.2 tls
370 1.1.1.1.8.2 tls /** 0011 0001 1bit 0011 bt %e1%1, $%a0 */
371 1.1.1.1.8.2 tls ID(branch_cond); DC(pc+IMMS(1)+3); SM(HL,0); SB(bit); COND(T);
372 1.1.1.1.8.2 tls
373 1.1.1.1.8.2 tls /** 0011 0001 0bit 0011 bt %1, $%a0 */
374 1.1.1.1.8.2 tls ID(branch_cond); DC(pc+IMMS(1)+3); SR(A); SB(bit); COND(T);
375 1.1.1.1.8.2 tls
376 1.1.1.1.8.2 tls /** 0011 0001 1bit 0010 bt %s1, $%a0 */
377 1.1.1.1.8.2 tls ID(branch_cond); SM(None, SFR); SB(bit); DC(pc+IMMS(1)+4); COND(T);
378 1.1.1.1.8.2 tls
379 1.1.1.1.8.2 tls /** 0011 0001 0bit 0010 bt %s1, $%a0 */
380 1.1.1.1.8.2 tls ID(branch_cond); SM(None, SADDR); SB(bit); DC(pc+IMMS(1)+4); COND(T);
381 1.1.1.1.8.2 tls
382 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
383 1.1.1.1.8.2 tls
384 1.1.1.1.8.2 tls /** 0011 0001 1bit 0001 btclr %e1%1, $%a0 */
385 1.1.1.1.8.2 tls ID(branch_cond_clear); DC(pc+IMMS(1)+3); SM(HL,0); SB(bit); COND(T);
386 1.1.1.1.8.2 tls
387 1.1.1.1.8.2 tls /** 0011 0001 0bit 0001 btclr %1, $%a0 */
388 1.1.1.1.8.2 tls ID(branch_cond_clear); DC(pc+IMMS(1)+3); SR(A); SB(bit); COND(T);
389 1.1.1.1.8.2 tls
390 1.1.1.1.8.2 tls /** 0011 0001 1bit 0000 btclr %s1, $%a0 */
391 1.1.1.1.8.2 tls ID(branch_cond_clear); SM(None, SFR); SB(bit); DC(pc+IMMS(1)+4); COND(T);
392 1.1.1.1.8.2 tls
393 1.1.1.1.8.2 tls /** 0011 0001 0bit 0000 btclr %s1, $%a0 */
394 1.1.1.1.8.2 tls ID(branch_cond_clear); SM(None, SADDR); SB(bit); DC(pc+IMMS(1)+4); COND(T);
395 1.1.1.1.8.2 tls
396 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
397 1.1.1.1.8.2 tls
398 1.1.1.1.8.2 tls /** 1111 1100 call !%!a0 */
399 1.1.1.1.8.2 tls ID(call); DC(IMMU(3));
400 1.1.1.1.8.2 tls
401 1.1.1.1.8.2 tls /** 1111 1101 call %!a0 */
402 1.1.1.1.8.2 tls ID(call); DC(IMMU(2));
403 1.1.1.1.8.2 tls
404 1.1.1.1.8.2 tls /** 1111 1110 call $%!a0 */
405 1.1.1.1.8.2 tls ID(call); DC(pc+IMMS(2)+3);
406 1.1.1.1.8.2 tls
407 1.1.1.1.8.2 tls /** 0110 0001 11rg 1010 call %0 */
408 1.1.1.1.8.2 tls ID(call); DRW(rg);
409 1.1.1.1.8.2 tls
410 1.1.1.1.8.2 tls /** 0110 0001 1nnn 01mm callt [%x0] */
411 1.1.1.1.8.2 tls ID(call); DM(None, 0x80 + mm*16 + nnn*2);
412 1.1.1.1.8.2 tls
413 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
414 1.1.1.1.8.2 tls
415 1.1.1.1.8.2 tls /** 0111 0001 0bit 1000 clr1 %e0%!0 */
416 1.1.1.1.8.2 tls ID(mov); DM(None, IMMU(2)); DB(bit); SC(0);
417 1.1.1.1.8.2 tls
418 1.1.1.1.8.2 tls /** 0111 0001 1bit 0011 clr1 %e0%0 */
419 1.1.1.1.8.2 tls ID(mov); DM(HL, 0); DB(bit); SC(0);
420 1.1.1.1.8.2 tls
421 1.1.1.1.8.2 tls /** 0111 0001 1bit 1011 clr1 %0 */
422 1.1.1.1.8.2 tls ID(mov); DR(A); DB(bit); SC(0);
423 1.1.1.1.8.2 tls
424 1.1.1.1.8.2 tls /** 0111 0001 1000 1000 clr1 cy */
425 1.1.1.1.8.2 tls ID(mov); DCY(); SC(0);
426 1.1.1.1.8.2 tls
427 1.1.1.1.8.2 tls /** 0111 0001 0bit 1011 clr1 %s0 */
428 1.1.1.1.8.2 tls op0 = SFR;
429 1.1.1.1.8.2 tls ID(mov); DM(None, op0); DB(bit); SC(0);
430 1.1.1.1.8.2 tls if (op0 == RL78_SFR_PSW && bit == 7)
431 1.1.1.1.8.2 tls rl78->syntax = "di";
432 1.1.1.1.8.2 tls
433 1.1.1.1.8.2 tls /** 0111 0001 0bit 0011 clr1 %0 */
434 1.1.1.1.8.2 tls ID(mov); DM(None, SADDR); DB(bit); SC(0);
435 1.1.1.1.8.2 tls
436 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
437 1.1.1.1.8.2 tls
438 1.1.1.1.8.2 tls /** 1111 0101 clrb %e0%!0 */
439 1.1.1.1.8.2 tls ID(mov); DM(None, IMMU(2)); SC(0);
440 1.1.1.1.8.2 tls
441 1.1.1.1.8.2 tls /** 1111 00rg clrb %0 */
442 1.1.1.1.8.2 tls ID(mov); DRB(rg); SC(0);
443 1.1.1.1.8.2 tls
444 1.1.1.1.8.2 tls /** 1111 0100 clrb %0 */
445 1.1.1.1.8.2 tls ID(mov); DM(None, SADDR); SC(0);
446 1.1.1.1.8.2 tls
447 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
448 1.1.1.1.8.2 tls
449 1.1.1.1.8.2 tls /** 1111 0110 clrw %0 */
450 1.1.1.1.8.2 tls ID(mov); DR(AX); SC(0);
451 1.1.1.1.8.2 tls
452 1.1.1.1.8.2 tls /** 1111 0111 clrw %0 */
453 1.1.1.1.8.2 tls ID(mov); DR(BC); SC(0);
454 1.1.1.1.8.2 tls
455 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
456 1.1.1.1.8.2 tls
457 1.1.1.1.8.2 tls /** 0100 0000 cmp %e0%!0, #%1 */
458 1.1.1.1.8.2 tls ID(cmp); DM(None, IMMU(2)); SC(IMMU(1)); Fzac;
459 1.1.1.1.8.2 tls
460 1.1.1.1.8.2 tls /** 0100 1010 cmp %0, #%1 */
461 1.1.1.1.8.2 tls ID(cmp); DM(None, SADDR); SC(IMMU(1)); Fzac;
462 1.1.1.1.8.2 tls
463 1.1.1.1.8.2 tls /** 0100 1111 cmp %0, %e1%!1 */
464 1.1.1.1.8.2 tls ID(cmp); DR(A); SM(None, IMMU(2)); Fzac;
465 1.1.1.1.8.2 tls
466 1.1.1.1.8.2 tls /** 0100 1101 cmp %0, %e1%1 */
467 1.1.1.1.8.2 tls ID(cmp); DR(A); SM(HL, 0); Fzac;
468 1.1.1.1.8.2 tls
469 1.1.1.1.8.2 tls /** 0110 0001 1100 0000 cmp %0, %e1%1 */
470 1.1.1.1.8.2 tls ID(cmp); DR(A); SM2(HL, B, 0); Fzac;
471 1.1.1.1.8.2 tls
472 1.1.1.1.8.2 tls /** 0110 0001 1100 0010 cmp %0, %e1%1 */
473 1.1.1.1.8.2 tls ID(cmp); DR(A); SM2(HL, C, 0); Fzac;
474 1.1.1.1.8.2 tls
475 1.1.1.1.8.2 tls /** 0100 1110 cmp %0, %e1%1 */
476 1.1.1.1.8.2 tls ID(cmp); DR(A); SM(HL, IMMU(1)); Fzac;
477 1.1.1.1.8.2 tls
478 1.1.1.1.8.2 tls /** 0100 1100 cmp %0, #%1 */
479 1.1.1.1.8.2 tls ID(cmp); DR(A); SC(IMMU(1)); Fzac;
480 1.1.1.1.8.2 tls
481 1.1.1.1.8.2 tls /** 0110 0001 0100 1rba cmp %0, %1 */
482 1.1.1.1.8.2 tls ID(cmp); DR(A); SRB(rba); Fzac;
483 1.1.1.1.8.2 tls
484 1.1.1.1.8.2 tls /** 0110 0001 0100 0reg cmp %0, %1 */
485 1.1.1.1.8.2 tls ID(cmp); DRB(reg); SR(A); Fzac;
486 1.1.1.1.8.2 tls
487 1.1.1.1.8.2 tls /** 0100 1011 cmp %0, %1 */
488 1.1.1.1.8.2 tls ID(cmp); DR(A); SM(None, SADDR); Fzac;
489 1.1.1.1.8.2 tls
490 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
491 1.1.1.1.8.2 tls
492 1.1.1.1.8.2 tls /** 1101 0101 cmp0 %e0%!0 */
493 1.1.1.1.8.2 tls ID(cmp); DM(None, IMMU(2)); SC(0); Fzac;
494 1.1.1.1.8.2 tls
495 1.1.1.1.8.2 tls /** 1101 00rg cmp0 %0 */
496 1.1.1.1.8.2 tls ID(cmp); DRB(rg); SC(0); Fzac;
497 1.1.1.1.8.2 tls
498 1.1.1.1.8.2 tls /** 1101 0100 cmp0 %0 */
499 1.1.1.1.8.2 tls ID(cmp); DM(None, SADDR); SC(0); Fzac;
500 1.1.1.1.8.2 tls
501 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
502 1.1.1.1.8.2 tls
503 1.1.1.1.8.2 tls /** 0110 0001 1101 1110 cmps %0, %e1%1 */
504 1.1.1.1.8.2 tls ID(cmp); DR(X); SM(HL, IMMU(1)); Fzac;
505 1.1.1.1.8.2 tls
506 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
507 1.1.1.1.8.2 tls
508 1.1.1.1.8.2 tls /** 0100 0010 cmpw %0, %e1%!1 */
509 1.1.1.1.8.2 tls ID(cmp); W(); DR(AX); SM(None, IMMU(2)); Fzac;
510 1.1.1.1.8.2 tls
511 1.1.1.1.8.2 tls /** 0110 0001 0100 1001 cmpw %0, %e1%1 */
512 1.1.1.1.8.2 tls ID(cmp); W(); DR(AX); SM(HL, IMMU(1)); Fzac;
513 1.1.1.1.8.2 tls
514 1.1.1.1.8.2 tls /** 0100 0100 cmpw %0, #%1 */
515 1.1.1.1.8.2 tls ID(cmp); W(); DR(AX); SC(IMMU(2)); Fzac;
516 1.1.1.1.8.2 tls
517 1.1.1.1.8.2 tls /** 0100 0ra1 cmpw %0, %1 */
518 1.1.1.1.8.2 tls ID(cmp); W(); DR(AX); SRW(ra); Fzac;
519 1.1.1.1.8.2 tls
520 1.1.1.1.8.2 tls /** 0100 0110 cmpw %0, %1 */
521 1.1.1.1.8.2 tls ID(cmp); W(); DR(AX); SM(None, SADDR); Fzac;
522 1.1.1.1.8.2 tls
523 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
524 1.1.1.1.8.2 tls
525 1.1.1.1.8.2 tls /** 1011 0000 dec %e0%!0 */
526 1.1.1.1.8.2 tls ID(sub); DM(None, IMMU(2)); SC(1); Fza;
527 1.1.1.1.8.2 tls
528 1.1.1.1.8.2 tls /** 0110 0001 0110 1001 dec %e0%0 */
529 1.1.1.1.8.2 tls ID(sub); DM(HL, IMMU(1)); SC(1); Fza;
530 1.1.1.1.8.2 tls
531 1.1.1.1.8.2 tls /** 1001 0reg dec %0 */
532 1.1.1.1.8.2 tls ID(sub); DRB(reg); SC(1); Fza;
533 1.1.1.1.8.2 tls
534 1.1.1.1.8.2 tls /** 1011 0100 dec %0 */
535 1.1.1.1.8.2 tls ID(sub); DM(None, SADDR); SC(1); Fza;
536 1.1.1.1.8.2 tls
537 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
538 1.1.1.1.8.2 tls
539 1.1.1.1.8.2 tls /** 1011 0010 decw %e0%!0 */
540 1.1.1.1.8.2 tls ID(sub); W(); DM(None, IMMU(2)); SC(1);
541 1.1.1.1.8.2 tls
542 1.1.1.1.8.2 tls /** 0110 0001 1000 1001 decw %e0%0 */
543 1.1.1.1.8.2 tls ID(sub); W(); DM(HL, IMMU(1)); SC(1);
544 1.1.1.1.8.2 tls
545 1.1.1.1.8.2 tls /** 1011 0rg1 decw %0 */
546 1.1.1.1.8.2 tls ID(sub); W(); DRW(rg); SC(1);
547 1.1.1.1.8.2 tls
548 1.1.1.1.8.2 tls /** 1011 0110 decw %0 */
549 1.1.1.1.8.2 tls ID(sub); W(); DM(None, SADDR); SC(1);
550 1.1.1.1.8.2 tls
551 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
552 1.1.1.1.8.2 tls
553 1.1.1.1.8.2 tls /** 0110 0001 1110 1101 halt */
554 1.1.1.1.8.2 tls ID(halt);
555 1.1.1.1.8.2 tls
556 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
557 1.1.1.1.8.2 tls
558 1.1.1.1.8.2 tls /** 1010 0000 inc %e0%!0 */
559 1.1.1.1.8.2 tls ID(add); DM(None, IMMU(2)); SC(1); Fza;
560 1.1.1.1.8.2 tls
561 1.1.1.1.8.2 tls /** 0110 0001 0101 1001 inc %e0%0 */
562 1.1.1.1.8.2 tls ID(add); DM(HL, IMMU(1)); SC(1); Fza;
563 1.1.1.1.8.2 tls
564 1.1.1.1.8.2 tls /** 1000 0reg inc %0 */
565 1.1.1.1.8.2 tls ID(add); DRB(reg); SC(1); Fza;
566 1.1.1.1.8.2 tls
567 1.1.1.1.8.2 tls /** 1010 0100 inc %0 */
568 1.1.1.1.8.2 tls ID(add); DM(None, SADDR); SC(1); Fza;
569 1.1.1.1.8.2 tls
570 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
571 1.1.1.1.8.2 tls
572 1.1.1.1.8.2 tls /** 1010 0010 incw %e0%!0 */
573 1.1.1.1.8.2 tls ID(add); W(); DM(None, IMMU(2)); SC(1);
574 1.1.1.1.8.2 tls
575 1.1.1.1.8.2 tls /** 0110 0001 0111 1001 incw %e0%0 */
576 1.1.1.1.8.2 tls ID(add); W(); DM(HL, IMMU(1)); SC(1);
577 1.1.1.1.8.2 tls
578 1.1.1.1.8.2 tls /** 1010 0rg1 incw %0 */
579 1.1.1.1.8.2 tls ID(add); W(); DRW(rg); SC(1);
580 1.1.1.1.8.2 tls
581 1.1.1.1.8.2 tls /** 1010 0110 incw %0 */
582 1.1.1.1.8.2 tls ID(add); W(); DM(None, SADDR); SC(1);
583 1.1.1.1.8.2 tls
584 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
585 1.1.1.1.8.2 tls
586 1.1.1.1.8.2 tls /** 1100 1111 mov %e0%!0, #%1 */
587 1.1.1.1.8.2 tls ID(mov); DM(None, IMMU(2)); SC(IMMU(1));
588 1.1.1.1.8.2 tls
589 1.1.1.1.8.2 tls /** 1001 1111 mov %e0%!0, %1 */
590 1.1.1.1.8.2 tls ID(mov); DM(None, IMMU(2)); SR(A);
591 1.1.1.1.8.2 tls
592 1.1.1.1.8.2 tls /** 1001 1001 mov %e0%0,%1 */
593 1.1.1.1.8.2 tls ID(mov); DM(DE, 0); SR(A);
594 1.1.1.1.8.2 tls
595 1.1.1.1.8.2 tls /** 1100 1010 mov %e0%0, #%1 */
596 1.1.1.1.8.2 tls ID(mov); DM(DE, IMMU(1)); SC(IMMU(1));
597 1.1.1.1.8.2 tls
598 1.1.1.1.8.2 tls /** 1001 1010 mov %e0%0, %1 */
599 1.1.1.1.8.2 tls ID(mov); DM(DE, IMMU(1)); SR(A);
600 1.1.1.1.8.2 tls
601 1.1.1.1.8.2 tls /** 1001 1011 mov %e0%0,%1 */
602 1.1.1.1.8.2 tls ID(mov); DM(HL, 0); SR(A);
603 1.1.1.1.8.2 tls
604 1.1.1.1.8.2 tls /** 0110 0001 1101 1001 mov %e0%0, %1 */
605 1.1.1.1.8.2 tls ID(mov); DM2(HL, B, 0); SR(A);
606 1.1.1.1.8.2 tls
607 1.1.1.1.8.2 tls /** 1100 1100 mov %e0%0, #%1 */
608 1.1.1.1.8.2 tls ID(mov); DM(HL, IMMU(1)); SC(IMMU(1));
609 1.1.1.1.8.2 tls
610 1.1.1.1.8.2 tls /** 1001 1100 mov %e0%0, %1 */
611 1.1.1.1.8.2 tls ID(mov); DM(HL, IMMU(1)); SR(A);
612 1.1.1.1.8.2 tls
613 1.1.1.1.8.2 tls /** 0110 0001 1111 1001 mov %e0%0, %1 */
614 1.1.1.1.8.2 tls ID(mov); DM2(HL, C, 0); SR(A);
615 1.1.1.1.8.2 tls
616 1.1.1.1.8.2 tls /** 1100 1000 mov %0, #%1 */
617 1.1.1.1.8.2 tls ID(mov); DM(SP, IMMU(1)); SC(IMMU(1));
618 1.1.1.1.8.2 tls
619 1.1.1.1.8.2 tls /** 1001 1000 mov %0, %1 */
620 1.1.1.1.8.2 tls ID(mov); DM(SP, IMMU(1)); SR(A);
621 1.1.1.1.8.2 tls
622 1.1.1.1.8.2 tls /** 1000 1111 mov %0, %e1%!1 */
623 1.1.1.1.8.2 tls ID(mov); DR(A); SM(None, IMMU(2));
624 1.1.1.1.8.2 tls
625 1.1.1.1.8.2 tls /** 1000 1001 mov %0, %e1%1 */
626 1.1.1.1.8.2 tls ID(mov); DR(A); SM(DE, 0);
627 1.1.1.1.8.2 tls
628 1.1.1.1.8.2 tls /** 1000 1010 mov %0, %e1%1 */
629 1.1.1.1.8.2 tls ID(mov); DR(A); SM(DE, IMMU(1));
630 1.1.1.1.8.2 tls
631 1.1.1.1.8.2 tls /** 1000 1011 mov %0, %e1%1 */
632 1.1.1.1.8.2 tls ID(mov); DR(A); SM(HL, 0);
633 1.1.1.1.8.2 tls
634 1.1.1.1.8.2 tls /** 1000 1100 mov %0, %e1%1 */
635 1.1.1.1.8.2 tls ID(mov); DR(A); SM(HL, IMMU(1));
636 1.1.1.1.8.2 tls
637 1.1.1.1.8.2 tls /** 0110 0001 1100 1001 mov %0, %e1%1 */
638 1.1.1.1.8.2 tls ID(mov); DR(A); SM2(HL, B, 0);
639 1.1.1.1.8.2 tls
640 1.1.1.1.8.2 tls /** 0110 0001 1110 1001 mov %0, %e1%1 */
641 1.1.1.1.8.2 tls ID(mov); DR(A); SM2(HL, C, 0);
642 1.1.1.1.8.2 tls
643 1.1.1.1.8.2 tls /** 1000 1000 mov %0, %e1%1 */
644 1.1.1.1.8.2 tls ID(mov); DR(A); SM(SP, IMMU(1));
645 1.1.1.1.8.2 tls
646 1.1.1.1.8.2 tls /** 0101 0reg mov %0, #%1 */
647 1.1.1.1.8.2 tls ID(mov); DRB(reg); SC(IMMU(1));
648 1.1.1.1.8.2 tls
649 1.1.1.1.8.2 tls /** 0110 0rba mov %0, %1 */
650 1.1.1.1.8.2 tls ID(mov); DR(A); SRB(rba);
651 1.1.1.1.8.2 tls
652 1.1.1.1.8.2 tls /** 1000 1110 1111 1101 mov %0, %1 */
653 1.1.1.1.8.2 tls ID(mov); DR(A); SR(ES);
654 1.1.1.1.8.2 tls
655 1.1.1.1.8.2 tls /** 0000 1001 mov %0, %e1%1 */
656 1.1.1.1.8.2 tls ID(mov); DR(A); SM(B, IMMU(2));
657 1.1.1.1.8.2 tls
658 1.1.1.1.8.2 tls /** 0100 1001 mov %0, %e1%1 */
659 1.1.1.1.8.2 tls ID(mov); DR(A); SM(BC, IMMU(2));
660 1.1.1.1.8.2 tls
661 1.1.1.1.8.2 tls /** 0010 1001 mov %0, %e1%1 */
662 1.1.1.1.8.2 tls ID(mov); DR(A); SM(C, IMMU(2));
663 1.1.1.1.8.2 tls
664 1.1.1.1.8.2 tls /** 1000 1110 mov %0, %s1 */
665 1.1.1.1.8.2 tls ID(mov); DR(A); SM(None, SFR);
666 1.1.1.1.8.2 tls
667 1.1.1.1.8.2 tls /** 1000 1101 mov %0, %1 */
668 1.1.1.1.8.2 tls ID(mov); DR(A); SM(None, SADDR);
669 1.1.1.1.8.2 tls
670 1.1.1.1.8.2 tls /** 1110 1001 mov %0, %e1%!1 */
671 1.1.1.1.8.2 tls ID(mov); DR(B); SM(None, IMMU(2));
672 1.1.1.1.8.2 tls
673 1.1.1.1.8.2 tls /** 0111 0rba mov %0, %1 */
674 1.1.1.1.8.2 tls ID(mov); DRB(rba); SR(A);
675 1.1.1.1.8.2 tls
676 1.1.1.1.8.2 tls /** 1110 1000 mov %0, %1 */
677 1.1.1.1.8.2 tls ID(mov); DR(B); SM(None, SADDR);
678 1.1.1.1.8.2 tls
679 1.1.1.1.8.2 tls /** 1111 1001 mov %0, %e1%!1 */
680 1.1.1.1.8.2 tls ID(mov); DR(C); SM(None, IMMU(2));
681 1.1.1.1.8.2 tls
682 1.1.1.1.8.2 tls /** 1111 1000 mov %0, %1 */
683 1.1.1.1.8.2 tls ID(mov); DR(C); SM(None, SADDR);
684 1.1.1.1.8.2 tls
685 1.1.1.1.8.2 tls /** 1101 1001 mov %0, %e1%!1 */
686 1.1.1.1.8.2 tls ID(mov); DR(X); SM(None, IMMU(2));
687 1.1.1.1.8.2 tls
688 1.1.1.1.8.2 tls /** 1101 1000 mov %0, %1 */
689 1.1.1.1.8.2 tls ID(mov); DR(X); SM(None, SADDR);
690 1.1.1.1.8.2 tls
691 1.1.1.1.8.2 tls /** 1001 1110 1111 1100 mov %0, %1 */
692 1.1.1.1.8.2 tls ID(mov); DR(CS); SR(A);
693 1.1.1.1.8.2 tls
694 1.1.1.1.8.2 tls /** 0100 0001 mov %0, #%1 */
695 1.1.1.1.8.2 tls ID(mov); DR(ES); SC(IMMU(1));
696 1.1.1.1.8.2 tls
697 1.1.1.1.8.2 tls /** 1001 1110 1111 1101 mov %0, %1 */
698 1.1.1.1.8.2 tls ID(mov); DR(ES); SR(A);
699 1.1.1.1.8.2 tls
700 1.1.1.1.8.2 tls /** 0110 0001 1011 1000 mov %0, %1 */
701 1.1.1.1.8.2 tls ID(mov); DR(ES); SM(None, SADDR);
702 1.1.1.1.8.2 tls
703 1.1.1.1.8.2 tls /** 0001 1001 mov %e0%0, #%1 */
704 1.1.1.1.8.2 tls ID(mov); DM(B, IMMU(2)); SC(IMMU(1));
705 1.1.1.1.8.2 tls
706 1.1.1.1.8.2 tls /** 0001 1000 mov %e0%0, %1 */
707 1.1.1.1.8.2 tls ID(mov); DM(B, IMMU(2)); SR(A);
708 1.1.1.1.8.2 tls
709 1.1.1.1.8.2 tls /** 0011 1001 mov %e0%0, #%1 */
710 1.1.1.1.8.2 tls ID(mov); DM(BC, IMMU(2)); SC(IMMU(1));
711 1.1.1.1.8.2 tls
712 1.1.1.1.8.2 tls /** 0100 1000 mov %e0%0, %1 */
713 1.1.1.1.8.2 tls ID(mov); DM(BC, IMMU(2)); SR(A);
714 1.1.1.1.8.2 tls
715 1.1.1.1.8.2 tls /** 0011 1000 mov %e0%0, #%1 */
716 1.1.1.1.8.2 tls ID(mov); DM(C, IMMU(2)); SC(IMMU(1));
717 1.1.1.1.8.2 tls
718 1.1.1.1.8.2 tls /** 0010 1000 mov %e0%0, %1 */
719 1.1.1.1.8.2 tls ID(mov); DM(C, IMMU(2)); SR(A);
720 1.1.1.1.8.2 tls
721 1.1.1.1.8.2 tls /** 1100 1101 mov %0, #%1 */
722 1.1.1.1.8.2 tls ID(mov); DM(None, SADDR); SC(IMMU(1));
723 1.1.1.1.8.2 tls
724 1.1.1.1.8.2 tls /** 1001 1101 mov %0, %1 */
725 1.1.1.1.8.2 tls ID(mov); DM(None, SADDR); SR(A);
726 1.1.1.1.8.2 tls
727 1.1.1.1.8.2 tls /** 1100 1110 mov %s0, #%1 */
728 1.1.1.1.8.2 tls op0 = SFR;
729 1.1.1.1.8.2 tls op1 = IMMU(1);
730 1.1.1.1.8.2 tls ID(mov); DM(None, op0); SC(op1);
731 1.1.1.1.8.2 tls if (op0 == 0xffffb)
732 1.1.1.1.8.2 tls switch (op1)
733 1.1.1.1.8.2 tls {
734 1.1.1.1.8.2 tls case 0x01:
735 1.1.1.1.8.2 tls rl78->syntax = "mulhu"; ID(mulhu);
736 1.1.1.1.8.2 tls break;
737 1.1.1.1.8.2 tls case 0x02:
738 1.1.1.1.8.2 tls rl78->syntax = "mulh"; ID(mulh);
739 1.1.1.1.8.2 tls break;
740 1.1.1.1.8.2 tls case 0x03:
741 1.1.1.1.8.2 tls rl78->syntax = "divhu"; ID(divhu);
742 1.1.1.1.8.2 tls break;
743 1.1.1.1.8.2 tls case 0x04:
744 1.1.1.1.8.2 tls rl78->syntax = "divwu"; ID(divwu);
745 1.1.1.1.8.2 tls break;
746 1.1.1.1.8.2 tls case 0x05:
747 1.1.1.1.8.2 tls rl78->syntax = "machu"; ID(machu);
748 1.1.1.1.8.2 tls break;
749 1.1.1.1.8.2 tls case 0x06:
750 1.1.1.1.8.2 tls rl78->syntax = "mach"; ID(mach);
751 1.1.1.1.8.2 tls break;
752 1.1.1.1.8.2 tls }
753 1.1.1.1.8.2 tls
754 1.1.1.1.8.2 tls /** 1001 1110 mov %0, %1 */
755 1.1.1.1.8.2 tls ID(mov); DM(None, SFR); SR(A);
756 1.1.1.1.8.2 tls
757 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
758 1.1.1.1.8.2 tls
759 1.1.1.1.8.2 tls /** 0111 0001 1bit 0001 mov1 %e0%0, cy */
760 1.1.1.1.8.2 tls ID(mov); DM(HL, 0); DB(bit); SCY();
761 1.1.1.1.8.2 tls
762 1.1.1.1.8.2 tls /** 0111 0001 1bit 1001 mov1 %e0%0, cy */
763 1.1.1.1.8.2 tls ID(mov); DR(A); DB(bit); SCY();
764 1.1.1.1.8.2 tls
765 1.1.1.1.8.2 tls /** 0111 0001 1bit 0100 mov1 cy, %e1%1 */
766 1.1.1.1.8.2 tls ID(mov); DCY(); SM(HL, 0); SB(bit);
767 1.1.1.1.8.2 tls
768 1.1.1.1.8.2 tls /** 0111 0001 1bit 1100 mov1 cy, %e1%1 */
769 1.1.1.1.8.2 tls ID(mov); DCY(); SR(A); SB(bit);
770 1.1.1.1.8.2 tls
771 1.1.1.1.8.2 tls /** 0111 0001 0bit 0100 mov1 cy, %1 */
772 1.1.1.1.8.2 tls ID(mov); DCY(); SM(None, SADDR); SB(bit);
773 1.1.1.1.8.2 tls
774 1.1.1.1.8.2 tls /** 0111 0001 0bit 1100 mov1 cy, %s1 */
775 1.1.1.1.8.2 tls ID(mov); DCY(); SM(None, SFR); SB(bit);
776 1.1.1.1.8.2 tls
777 1.1.1.1.8.2 tls /** 0111 0001 0bit 0001 mov1 %0, cy */
778 1.1.1.1.8.2 tls ID(mov); DM(None, SADDR); DB(bit); SCY();
779 1.1.1.1.8.2 tls
780 1.1.1.1.8.2 tls /** 0111 0001 0bit 1001 mov1 %s0, cy */
781 1.1.1.1.8.2 tls ID(mov); DM(None, SFR); DB(bit); SCY();
782 1.1.1.1.8.2 tls
783 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
784 1.1.1.1.8.2 tls
785 1.1.1.1.8.2 tls /** 0110 0001 1100 1110 movs %e0%0, %1 */
786 1.1.1.1.8.2 tls ID(mov); DM(HL, IMMU(1)); SR(X); Fzc;
787 1.1.1.1.8.2 tls
788 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
789 1.1.1.1.8.2 tls
790 1.1.1.1.8.2 tls /** 1011 1111 movw %e0%!0, %1 */
791 1.1.1.1.8.2 tls ID(mov); W(); DM(None, IMMU(2)); SR(AX);
792 1.1.1.1.8.2 tls
793 1.1.1.1.8.2 tls /** 1011 1001 movw %e0%0, %1 */
794 1.1.1.1.8.2 tls ID(mov); W(); DM(DE, 0); SR(AX);
795 1.1.1.1.8.2 tls
796 1.1.1.1.8.2 tls /** 1011 1010 movw %e0%0, %1 */
797 1.1.1.1.8.2 tls ID(mov); W(); DM(DE, IMMU(1)); SR(AX);
798 1.1.1.1.8.2 tls
799 1.1.1.1.8.2 tls /** 1011 1011 movw %e0%0, %1 */
800 1.1.1.1.8.2 tls ID(mov); W(); DM(HL, 0); SR(AX);
801 1.1.1.1.8.2 tls
802 1.1.1.1.8.2 tls /** 1011 1100 movw %e0%0, %1 */
803 1.1.1.1.8.2 tls ID(mov); W(); DM(HL, IMMU(1)); SR(AX);
804 1.1.1.1.8.2 tls
805 1.1.1.1.8.2 tls /** 1011 1000 movw %0, %1 */
806 1.1.1.1.8.2 tls ID(mov); W(); DM(SP, IMMU(1)); SR(AX);
807 1.1.1.1.8.2 tls
808 1.1.1.1.8.2 tls /** 1010 1111 movw %0, %e1%!1 */
809 1.1.1.1.8.2 tls ID(mov); W(); DR(AX); SM(None, IMMU(2));
810 1.1.1.1.8.2 tls
811 1.1.1.1.8.2 tls
812 1.1.1.1.8.2 tls /** 1010 1001 movw %0, %e1%1 */
813 1.1.1.1.8.2 tls ID(mov); W(); DR(AX); SM(DE, 0);
814 1.1.1.1.8.2 tls
815 1.1.1.1.8.2 tls /** 1010 1010 movw %0, %e1%1 */
816 1.1.1.1.8.2 tls ID(mov); W(); DR(AX); SM(DE, IMMU(1));
817 1.1.1.1.8.2 tls
818 1.1.1.1.8.2 tls /** 1010 1011 movw %0, %e1%1 */
819 1.1.1.1.8.2 tls ID(mov); W(); DR(AX); SM(HL, 0);
820 1.1.1.1.8.2 tls
821 1.1.1.1.8.2 tls /** 1010 1100 movw %0, %e1%1 */
822 1.1.1.1.8.2 tls ID(mov); W(); DR(AX); SM(HL, IMMU(1));
823 1.1.1.1.8.2 tls
824 1.1.1.1.8.2 tls /** 1010 1000 movw %0, %1 */
825 1.1.1.1.8.2 tls ID(mov); W(); DR(AX); SM(SP, IMMU(1));
826 1.1.1.1.8.2 tls
827 1.1.1.1.8.2 tls /** 0011 0rg0 movw %0, #%1 */
828 1.1.1.1.8.2 tls ID(mov); W(); DRW(rg); SC(IMMU(2));
829 1.1.1.1.8.2 tls
830 1.1.1.1.8.2 tls /** 0001 0ra1 movw %0, %1 */
831 1.1.1.1.8.2 tls ID(mov); W(); DR(AX); SRW(ra);
832 1.1.1.1.8.2 tls
833 1.1.1.1.8.2 tls /** 0001 0ra0 movw %0, %1 */
834 1.1.1.1.8.2 tls ID(mov); W(); DRW(ra); SR(AX);
835 1.1.1.1.8.2 tls
836 1.1.1.1.8.2 tls /** 0101 1001 movw %0, %e1%1 */
837 1.1.1.1.8.2 tls ID(mov); W(); DR(AX); SM(B, IMMU(2));
838 1.1.1.1.8.2 tls
839 1.1.1.1.8.2 tls /** 0110 1001 movw %0, %e1%1 */
840 1.1.1.1.8.2 tls ID(mov); W(); DR(AX); SM(C, IMMU(2));
841 1.1.1.1.8.2 tls
842 1.1.1.1.8.2 tls /** 0111 1001 movw %0, %e1%1 */
843 1.1.1.1.8.2 tls ID(mov); W(); DR(AX); SM(BC, IMMU(2));
844 1.1.1.1.8.2 tls
845 1.1.1.1.8.2 tls /** 0101 1000 movw %e0%0, %1 */
846 1.1.1.1.8.2 tls ID(mov); W(); DM(B, IMMU(2)); SR(AX);
847 1.1.1.1.8.2 tls
848 1.1.1.1.8.2 tls /** 0110 1000 movw %e0%0, %1 */
849 1.1.1.1.8.2 tls ID(mov); W(); DM(C, IMMU(2)); SR(AX);
850 1.1.1.1.8.2 tls
851 1.1.1.1.8.2 tls /** 0111 1000 movw %e0%0, %1 */
852 1.1.1.1.8.2 tls ID(mov); W(); DM(BC, IMMU(2)); SR(AX);
853 1.1.1.1.8.2 tls
854 1.1.1.1.8.2 tls /** 1010 1101 movw %0, %1 */
855 1.1.1.1.8.2 tls ID(mov); W(); DR(AX); SM(None, SADDR);
856 1.1.1.1.8.2 tls
857 1.1.1.1.8.2 tls /** 1010 1110 movw %0, %s1 */
858 1.1.1.1.8.2 tls ID(mov); W(); DR(AX); SM(None, SFR);
859 1.1.1.1.8.2 tls
860 1.1.1.1.8.2 tls /** 11ra 1011 movw %0, %e1%!1 */
861 1.1.1.1.8.2 tls ID(mov); W(); DRW(ra); SM(None, IMMU(2));
862 1.1.1.1.8.2 tls
863 1.1.1.1.8.2 tls /** 11ra 1010 movw %0, %1 */
864 1.1.1.1.8.2 tls ID(mov); W(); DRW(ra); SM(None, SADDR);
865 1.1.1.1.8.2 tls
866 1.1.1.1.8.2 tls /** 1100 1001 movw %0, #%1 */
867 1.1.1.1.8.2 tls ID(mov); W(); DM(None, SADDR); SC(IMMU(2));
868 1.1.1.1.8.2 tls
869 1.1.1.1.8.2 tls /** 1011 1101 movw %0, %1 */
870 1.1.1.1.8.2 tls ID(mov); W(); DM(None, SADDR); SR(AX);
871 1.1.1.1.8.2 tls
872 1.1.1.1.8.2 tls /** 1100 1011 movw %0, #%1 */
873 1.1.1.1.8.2 tls ID(mov); W(); DM(None, SFR); SC(IMMU(2));
874 1.1.1.1.8.2 tls
875 1.1.1.1.8.2 tls /** 1011 1110 movw %0, %1 */
876 1.1.1.1.8.2 tls ID(mov); W(); DM(None, SFR); SR(AX);
877 1.1.1.1.8.2 tls
878 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
879 1.1.1.1.8.2 tls
880 1.1.1.1.8.2 tls /** 1101 0110 mulu x */
881 1.1.1.1.8.2 tls ID(mulu);
882 1.1.1.1.8.2 tls
883 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
884 1.1.1.1.8.2 tls
885 1.1.1.1.8.2 tls /** 0000 0000 nop */
886 1.1.1.1.8.2 tls ID(nop);
887 1.1.1.1.8.2 tls
888 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
889 1.1.1.1.8.2 tls
890 1.1.1.1.8.2 tls /** 0111 0001 1100 0000 not1 cy */
891 1.1.1.1.8.2 tls ID(xor); DCY(); SC(1);
892 1.1.1.1.8.2 tls
893 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
894 1.1.1.1.8.2 tls
895 1.1.1.1.8.2 tls /** 1110 0101 oneb %e0%!0 */
896 1.1.1.1.8.2 tls ID(mov); DM(None, IMMU(2)); SC(1);
897 1.1.1.1.8.2 tls
898 1.1.1.1.8.2 tls /** 1110 00rg oneb %0 */
899 1.1.1.1.8.2 tls ID(mov); DRB(rg); SC(1);
900 1.1.1.1.8.2 tls
901 1.1.1.1.8.2 tls /** 1110 0100 oneb %0 */
902 1.1.1.1.8.2 tls ID(mov); DM(None, SADDR); SC(1);
903 1.1.1.1.8.2 tls
904 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
905 1.1.1.1.8.2 tls
906 1.1.1.1.8.2 tls /** 1110 0110 onew %0 */
907 1.1.1.1.8.2 tls ID(mov); DR(AX); SC(1);
908 1.1.1.1.8.2 tls
909 1.1.1.1.8.2 tls /** 1110 0111 onew %0 */
910 1.1.1.1.8.2 tls ID(mov); DR(BC); SC(1);
911 1.1.1.1.8.2 tls
912 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
913 1.1.1.1.8.2 tls
914 1.1.1.1.8.2 tls /** 0110 1111 or %0, %e1%!1 */
915 1.1.1.1.8.2 tls ID(or); DR(A); SM(None, IMMU(2)); Fz;
916 1.1.1.1.8.2 tls
917 1.1.1.1.8.2 tls /** 0110 1101 or %0, %e1%1 */
918 1.1.1.1.8.2 tls ID(or); DR(A); SM(HL, 0); Fz;
919 1.1.1.1.8.2 tls
920 1.1.1.1.8.2 tls /** 0110 0001 1110 0000 or %0, %e1%1 */
921 1.1.1.1.8.2 tls ID(or); DR(A); SM2(HL, B, 0); Fz;
922 1.1.1.1.8.2 tls
923 1.1.1.1.8.2 tls /** 0110 1110 or %0, %e1%1 */
924 1.1.1.1.8.2 tls ID(or); DR(A); SM(HL, IMMU(1)); Fz;
925 1.1.1.1.8.2 tls
926 1.1.1.1.8.2 tls /** 0110 0001 1110 0010 or %0, %e1%1 */
927 1.1.1.1.8.2 tls ID(or); DR(A); SM2(HL, C, 0); Fz;
928 1.1.1.1.8.2 tls
929 1.1.1.1.8.2 tls /** 0110 1100 or %0, #%1 */
930 1.1.1.1.8.2 tls ID(or); DR(A); SC(IMMU(1)); Fz;
931 1.1.1.1.8.2 tls
932 1.1.1.1.8.2 tls /** 0110 0001 0110 1rba or %0, %1 */
933 1.1.1.1.8.2 tls ID(or); DR(A); SRB(rba); Fz;
934 1.1.1.1.8.2 tls
935 1.1.1.1.8.2 tls /** 0110 0001 0110 0reg or %0, %1 */
936 1.1.1.1.8.2 tls ID(or); DRB(reg); SR(A); Fz;
937 1.1.1.1.8.2 tls
938 1.1.1.1.8.2 tls /** 0110 1011 or %0, %1 */
939 1.1.1.1.8.2 tls ID(or); DR(A); SM(None, SADDR); Fz;
940 1.1.1.1.8.2 tls
941 1.1.1.1.8.2 tls /** 0110 1010 or %0, #%1 */
942 1.1.1.1.8.2 tls ID(or); DM(None, SADDR); SC(IMMU(1)); Fz;
943 1.1.1.1.8.2 tls
944 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
945 1.1.1.1.8.2 tls
946 1.1.1.1.8.2 tls /** 0111 0001 1bit 0110 or1 cy, %e1%1 */
947 1.1.1.1.8.2 tls ID(or); DCY(); SM(HL, 0); SB(bit);
948 1.1.1.1.8.2 tls
949 1.1.1.1.8.2 tls /** 0111 0001 1bit 1110 or1 cy, %1 */
950 1.1.1.1.8.2 tls ID(or); DCY(); SR(A); SB(bit);
951 1.1.1.1.8.2 tls
952 1.1.1.1.8.2 tls /** 0111 0001 0bit 1110 or1 cy, %s1 */
953 1.1.1.1.8.2 tls ID(or); DCY(); SM(None, SFR); SB(bit);
954 1.1.1.1.8.2 tls
955 1.1.1.1.8.2 tls /** 0111 0001 0bit 0110 or1 cy, %s1 */
956 1.1.1.1.8.2 tls ID(or); DCY(); SM(None, SADDR); SB(bit);
957 1.1.1.1.8.2 tls
958 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
959 1.1.1.1.8.2 tls
960 1.1.1.1.8.2 tls /** 1100 0rg0 pop %0 */
961 1.1.1.1.8.2 tls ID(mov); W(); DRW(rg); SPOP();
962 1.1.1.1.8.2 tls
963 1.1.1.1.8.2 tls /** 0110 0001 1100 1101 pop %s0 */
964 1.1.1.1.8.2 tls ID(mov); W(); DR(PSW); SPOP();
965 1.1.1.1.8.2 tls
966 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
967 1.1.1.1.8.2 tls
968 1.1.1.1.8.2 tls /** 1100 0rg1 push %1 */
969 1.1.1.1.8.2 tls ID(mov); W(); DPUSH(); SRW(rg);
970 1.1.1.1.8.2 tls
971 1.1.1.1.8.2 tls /** 0110 0001 1101 1101 push %s1 */
972 1.1.1.1.8.2 tls ID(mov); W(); DPUSH(); SR(PSW);
973 1.1.1.1.8.2 tls
974 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
975 1.1.1.1.8.2 tls
976 1.1.1.1.8.2 tls /** 1101 0111 ret */
977 1.1.1.1.8.2 tls ID(ret);
978 1.1.1.1.8.2 tls
979 1.1.1.1.8.2 tls /** 0110 0001 1111 1100 reti */
980 1.1.1.1.8.2 tls ID(reti);
981 1.1.1.1.8.2 tls
982 1.1.1.1.8.2 tls /** 0110 0001 1110 1100 retb */
983 1.1.1.1.8.2 tls ID(reti);
984 1.1.1.1.8.2 tls
985 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
986 1.1.1.1.8.2 tls
987 1.1.1.1.8.2 tls /** 0110 0001 1110 1011 rol %0, %1 */
988 1.1.1.1.8.2 tls ID(rol); DR(A); SC(1);
989 1.1.1.1.8.2 tls
990 1.1.1.1.8.2 tls /** 0110 0001 1101 1100 rolc %0, %1 */
991 1.1.1.1.8.2 tls ID(rolc); DR(A); SC(1);
992 1.1.1.1.8.2 tls
993 1.1.1.1.8.2 tls /** 0110 0001 111r 1110 rolwc %0, %1 */
994 1.1.1.1.8.2 tls ID(rolc); W(); DRW(r); SC(1);
995 1.1.1.1.8.2 tls
996 1.1.1.1.8.2 tls /** 0110 0001 1101 1011 ror %0, %1 */
997 1.1.1.1.8.2 tls ID(ror); DR(A); SC(1);
998 1.1.1.1.8.2 tls
999 1.1.1.1.8.2 tls /** 0110 0001 1111 1011 rorc %0, %1 */
1000 1.1.1.1.8.2 tls ID(rorc); DR(A); SC(1);
1001 1.1.1.1.8.2 tls
1002 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
1003 1.1.1.1.8.2 tls
1004 1.1.1.1.8.2 tls /* Note that the branch insns need to be listed before the shift
1005 1.1.1.1.8.2 tls ones, as "shift count of zero" means "branch insn" */
1006 1.1.1.1.8.2 tls
1007 1.1.1.1.8.2 tls /** 0011 0001 0cnt 1011 sar %0, %1 */
1008 1.1.1.1.8.2 tls ID(sar); DR(A); SC(cnt);
1009 1.1.1.1.8.2 tls
1010 1.1.1.1.8.2 tls /** 0011 0001 wcnt 1111 sarw %0, %1 */
1011 1.1.1.1.8.2 tls ID(sar); W(); DR(AX); SC(wcnt);
1012 1.1.1.1.8.2 tls
1013 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
1014 1.1.1.1.8.2 tls
1015 1.1.1.1.8.2 tls /** 0110 0001 11rb 1111 sel rb%1 */
1016 1.1.1.1.8.2 tls ID(sel); SC(rb);
1017 1.1.1.1.8.2 tls
1018 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
1019 1.1.1.1.8.2 tls
1020 1.1.1.1.8.2 tls /** 0111 0001 0bit 0000 set1 %e0%!0 */
1021 1.1.1.1.8.2 tls ID(mov); DM(None, IMMU(2)); DB(bit); SC(1);
1022 1.1.1.1.8.2 tls
1023 1.1.1.1.8.2 tls /** 0111 0001 1bit 0010 set1 %e0%0 */
1024 1.1.1.1.8.2 tls ID(mov); DM(HL, 0); DB(bit); SC(1);
1025 1.1.1.1.8.2 tls
1026 1.1.1.1.8.2 tls /** 0111 0001 1bit 1010 set1 %0 */
1027 1.1.1.1.8.2 tls ID(mov); DR(A); DB(bit); SC(1);
1028 1.1.1.1.8.2 tls
1029 1.1.1.1.8.2 tls /** 0111 0001 1000 0000 set1 cy */
1030 1.1.1.1.8.2 tls ID(mov); DCY(); SC(1);
1031 1.1.1.1.8.2 tls
1032 1.1.1.1.8.2 tls /** 0111 0001 0bit 1010 set1 %s0 */
1033 1.1.1.1.8.2 tls op0 = SFR;
1034 1.1.1.1.8.2 tls ID(mov); DM(None, op0); DB(bit); SC(1);
1035 1.1.1.1.8.2 tls if (op0 == RL78_SFR_PSW && bit == 7)
1036 1.1.1.1.8.2 tls rl78->syntax = "ei";
1037 1.1.1.1.8.2 tls
1038 1.1.1.1.8.2 tls /** 0111 0001 0bit 0010 set1 %0 */
1039 1.1.1.1.8.2 tls ID(mov); DM(None, SADDR); DB(bit); SC(1);
1040 1.1.1.1.8.2 tls
1041 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
1042 1.1.1.1.8.2 tls
1043 1.1.1.1.8.2 tls /** 0011 0001 0cnt 1001 shl %0, %1 */
1044 1.1.1.1.8.2 tls ID(shl); DR(A); SC(cnt);
1045 1.1.1.1.8.2 tls
1046 1.1.1.1.8.2 tls /** 0011 0001 0cnt 1000 shl %0, %1 */
1047 1.1.1.1.8.2 tls ID(shl); DR(B); SC(cnt);
1048 1.1.1.1.8.2 tls
1049 1.1.1.1.8.2 tls /** 0011 0001 0cnt 0111 shl %0, %1 */
1050 1.1.1.1.8.2 tls ID(shl); DR(C); SC(cnt);
1051 1.1.1.1.8.2 tls
1052 1.1.1.1.8.2 tls /** 0011 0001 wcnt 1101 shlw %0, %1 */
1053 1.1.1.1.8.2 tls ID(shl); W(); DR(AX); SC(wcnt);
1054 1.1.1.1.8.2 tls
1055 1.1.1.1.8.2 tls /** 0011 0001 wcnt 1100 shlw %0, %1 */
1056 1.1.1.1.8.2 tls ID(shl); W(); DR(BC); SC(wcnt);
1057 1.1.1.1.8.2 tls
1058 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
1059 1.1.1.1.8.2 tls
1060 1.1.1.1.8.2 tls /** 0011 0001 0cnt 1010 shr %0, %1 */
1061 1.1.1.1.8.2 tls ID(shr); DR(A); SC(cnt);
1062 1.1.1.1.8.2 tls
1063 1.1.1.1.8.2 tls /** 0011 0001 wcnt 1110 shrw %0, %1 */
1064 1.1.1.1.8.2 tls ID(shr); W(); DR(AX); SC(wcnt);
1065 1.1.1.1.8.2 tls
1066 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
1067 1.1.1.1.8.2 tls
1068 1.1.1.1.8.2 tls /** 0110 0001 1100 1000 sk%c1 */
1069 1.1.1.1.8.2 tls ID(skip); COND(C);
1070 1.1.1.1.8.2 tls
1071 1.1.1.1.8.2 tls /** 0110 0001 1110 0011 sk%c1 */
1072 1.1.1.1.8.2 tls ID(skip); COND(H);
1073 1.1.1.1.8.2 tls
1074 1.1.1.1.8.2 tls /** 0110 0001 1101 1000 sk%c1 */
1075 1.1.1.1.8.2 tls ID(skip); COND(NC);
1076 1.1.1.1.8.2 tls
1077 1.1.1.1.8.2 tls /** 0110 0001 1111 0011 sk%c1 */
1078 1.1.1.1.8.2 tls ID(skip); COND(NH);
1079 1.1.1.1.8.2 tls
1080 1.1.1.1.8.2 tls /** 0110 0001 1111 1000 sk%c1 */
1081 1.1.1.1.8.2 tls ID(skip); COND(NZ);
1082 1.1.1.1.8.2 tls
1083 1.1.1.1.8.2 tls /** 0110 0001 1110 1000 sk%c1 */
1084 1.1.1.1.8.2 tls ID(skip); COND(Z);
1085 1.1.1.1.8.2 tls
1086 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
1087 1.1.1.1.8.2 tls
1088 1.1.1.1.8.2 tls /** 0110 0001 1111 1101 stop */
1089 1.1.1.1.8.2 tls ID(stop);
1090 1.1.1.1.8.2 tls
1091 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
1092 1.1.1.1.8.2 tls
1093 1.1.1.1.8.2 tls /** 0010 1111 sub %0, %e1%!1 */
1094 1.1.1.1.8.2 tls ID(sub); DR(A); SM(None, IMMU(2)); Fzac;
1095 1.1.1.1.8.2 tls
1096 1.1.1.1.8.2 tls /** 0010 1101 sub %0, %e1%1 */
1097 1.1.1.1.8.2 tls ID(sub); DR(A); SM(HL, 0); Fzac;
1098 1.1.1.1.8.2 tls
1099 1.1.1.1.8.2 tls /** 0110 0001 1010 000 sub %0, %e1%1 */
1100 1.1.1.1.8.2 tls ID(sub); DR(A); SM2(HL, B, 0); Fzac;
1101 1.1.1.1.8.2 tls
1102 1.1.1.1.8.2 tls /** 0010 1110 sub %0, %e1%1 */
1103 1.1.1.1.8.2 tls ID(sub); DR(A); SM(HL, IMMU(1)); Fzac;
1104 1.1.1.1.8.2 tls
1105 1.1.1.1.8.2 tls /** 0110 0001 1010 0010 sub %0, %e1%1 */
1106 1.1.1.1.8.2 tls ID(sub); DR(A); SM2(HL, C, 0); Fzac;
1107 1.1.1.1.8.2 tls
1108 1.1.1.1.8.2 tls /** 0010 1100 sub %0, #%1 */
1109 1.1.1.1.8.2 tls ID(sub); DR(A); SC(IMMU(1)); Fzac;
1110 1.1.1.1.8.2 tls
1111 1.1.1.1.8.2 tls /** 0110 0001 0010 1rba sub %0, %1 */
1112 1.1.1.1.8.2 tls ID(sub); DR(A); SRB(rba); Fzac;
1113 1.1.1.1.8.2 tls
1114 1.1.1.1.8.2 tls /** 0010 1011 sub %0, %1 */
1115 1.1.1.1.8.2 tls ID(sub); DR(A); SM(None, SADDR); Fzac;
1116 1.1.1.1.8.2 tls
1117 1.1.1.1.8.2 tls /** 0110 0001 0010 0reg sub %0, %1 */
1118 1.1.1.1.8.2 tls ID(sub); DRB(reg); SR(A); Fzac;
1119 1.1.1.1.8.2 tls
1120 1.1.1.1.8.2 tls /** 0010 1010 sub %0, #%1 */
1121 1.1.1.1.8.2 tls ID(sub); DM(None, SADDR); SC(IMMU(1)); Fzac;
1122 1.1.1.1.8.2 tls
1123 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
1124 1.1.1.1.8.2 tls
1125 1.1.1.1.8.2 tls /** 0011 1111 subc %0, %e1%!1 */
1126 1.1.1.1.8.2 tls ID(subc); DR(A); SM(None, IMMU(2)); Fzac;
1127 1.1.1.1.8.2 tls
1128 1.1.1.1.8.2 tls /** 0011 1101 subc %0, %e1%1 */
1129 1.1.1.1.8.2 tls ID(subc); DR(A); SM(HL, 0); Fzac;
1130 1.1.1.1.8.2 tls
1131 1.1.1.1.8.2 tls /** 0110 0001 1011 0000 subc %0, %e1%1 */
1132 1.1.1.1.8.2 tls ID(subc); DR(A); SM2(HL, B, 0); Fzac;
1133 1.1.1.1.8.2 tls
1134 1.1.1.1.8.2 tls /** 0110 0001 1011 0010 subc %0, %e1%1 */
1135 1.1.1.1.8.2 tls ID(subc); DR(A); SM2(HL, C, 0); Fzac;
1136 1.1.1.1.8.2 tls
1137 1.1.1.1.8.2 tls /** 0011 1110 subc %0, %e1%1 */
1138 1.1.1.1.8.2 tls ID(subc); DR(A); SM(HL, IMMU(1)); Fzac;
1139 1.1.1.1.8.2 tls
1140 1.1.1.1.8.2 tls /** 0011 1100 subc %0, #%1 */
1141 1.1.1.1.8.2 tls ID(subc); DR(A); SC(IMMU(1)); Fzac;
1142 1.1.1.1.8.2 tls
1143 1.1.1.1.8.2 tls /** 0110 0001 0011 1rba subc %0, %1 */
1144 1.1.1.1.8.2 tls ID(subc); DR(A); SRB(rba); Fzac;
1145 1.1.1.1.8.2 tls
1146 1.1.1.1.8.2 tls /** 0110 0001 0011 0reg subc %0, %1 */
1147 1.1.1.1.8.2 tls ID(subc); DRB(reg); SR(A); Fzac;
1148 1.1.1.1.8.2 tls
1149 1.1.1.1.8.2 tls /** 0011 1011 subc %0, %1 */
1150 1.1.1.1.8.2 tls ID(subc); DR(A); SM(None, SADDR); Fzac;
1151 1.1.1.1.8.2 tls
1152 1.1.1.1.8.2 tls /** 0011 1010 subc %0, #%1 */
1153 1.1.1.1.8.2 tls ID(subc); DM(None, SADDR); SC(IMMU(1)); Fzac;
1154 1.1.1.1.8.2 tls
1155 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
1156 1.1.1.1.8.2 tls
1157 1.1.1.1.8.2 tls /** 0010 0010 subw %0, %e1%!1 */
1158 1.1.1.1.8.2 tls ID(sub); W(); DR(AX); SM(None, IMMU(2)); Fzac;
1159 1.1.1.1.8.2 tls
1160 1.1.1.1.8.2 tls /** 0110 0001 0010 1001 subw %0, %e1%1 */
1161 1.1.1.1.8.2 tls ID(sub); W(); DR(AX); SM(HL, IMMU(1)); Fzac;
1162 1.1.1.1.8.2 tls
1163 1.1.1.1.8.2 tls /** 0010 0100 subw %0, #%1 */
1164 1.1.1.1.8.2 tls ID(sub); W(); DR(AX); SC(IMMU(2)); Fzac;
1165 1.1.1.1.8.2 tls
1166 1.1.1.1.8.2 tls /** 0010 0rw1 subw %0, %1 */
1167 1.1.1.1.8.2 tls ID(sub); W(); DR(AX); SRW(rw); Fzac;
1168 1.1.1.1.8.2 tls
1169 1.1.1.1.8.2 tls /** 0010 0110 subw %0, %1 */
1170 1.1.1.1.8.2 tls ID(sub); W(); DR(AX); SM(None, SADDR); Fzac;
1171 1.1.1.1.8.2 tls
1172 1.1.1.1.8.2 tls /** 0010 0000 subw %0, #%1 */
1173 1.1.1.1.8.2 tls ID(sub); W(); DR(SP); SC(IMMU(1)); Fzac;
1174 1.1.1.1.8.2 tls
1175 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
1176 1.1.1.1.8.2 tls
1177 1.1.1.1.8.2 tls /** 0110 0001 1010 1010 xch %0, %e1%!1 */
1178 1.1.1.1.8.2 tls ID(xch); DR(A); SM(None, IMMU(2));
1179 1.1.1.1.8.2 tls
1180 1.1.1.1.8.2 tls /** 0110 0001 1010 1110 xch %0, %e1%1 */
1181 1.1.1.1.8.2 tls ID(xch); DR(A); SM(DE, 0);
1182 1.1.1.1.8.2 tls
1183 1.1.1.1.8.2 tls /** 0110 0001 1010 1111 xch %0, %e1%1 */
1184 1.1.1.1.8.2 tls ID(xch); DR(A); SM(DE, IMMU(1));
1185 1.1.1.1.8.2 tls
1186 1.1.1.1.8.2 tls /** 0110 0001 1010 1100 xch %0, %e1%1 */
1187 1.1.1.1.8.2 tls ID(xch); DR(A); SM(HL, 0);
1188 1.1.1.1.8.2 tls
1189 1.1.1.1.8.2 tls /** 0110 0001 1011 1001 xch %0, %e1%1 */
1190 1.1.1.1.8.2 tls ID(xch); DR(A); SM2(HL, B, 0);
1191 1.1.1.1.8.2 tls
1192 1.1.1.1.8.2 tls /** 0110 0001 1010 1101 xch %0, %e1%1 */
1193 1.1.1.1.8.2 tls ID(xch); DR(A); SM(HL, IMMU(1));
1194 1.1.1.1.8.2 tls
1195 1.1.1.1.8.2 tls /** 0110 0001 1010 1001 xch %0, %e1%1 */
1196 1.1.1.1.8.2 tls ID(xch); DR(A); SM2(HL, C, 0);
1197 1.1.1.1.8.2 tls
1198 1.1.1.1.8.2 tls /** 0110 0001 1000 1reg xch %0, %1 */
1199 1.1.1.1.8.2 tls /* Note: DECW uses reg == X, so this must follow DECW */
1200 1.1.1.1.8.2 tls ID(xch); DR(A); SRB(reg);
1201 1.1.1.1.8.2 tls
1202 1.1.1.1.8.2 tls /** 0110 0001 1010 1000 xch %0, %1 */
1203 1.1.1.1.8.2 tls ID(xch); DR(A); SM(None, SADDR);
1204 1.1.1.1.8.2 tls
1205 1.1.1.1.8.2 tls /** 0110 0001 1010 1011 xch %0, %1 */
1206 1.1.1.1.8.2 tls ID(xch); DR(A); SM(None, SFR);
1207 1.1.1.1.8.2 tls
1208 1.1.1.1.8.2 tls /** 0000 1000 xch a, x */
1209 1.1.1.1.8.2 tls ID(xch); DR(A); SR(X);
1210 1.1.1.1.8.2 tls
1211 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
1212 1.1.1.1.8.2 tls
1213 1.1.1.1.8.2 tls /** 0011 0ra1 xchw %0, %1 */
1214 1.1.1.1.8.2 tls ID(xch); W(); DR(AX); SRW(ra);
1215 1.1.1.1.8.2 tls
1216 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
1217 1.1.1.1.8.2 tls
1218 1.1.1.1.8.2 tls /** 0111 1111 xor %0, %e1%!1 */
1219 1.1.1.1.8.2 tls ID(xor); DR(A); SM(None, IMMU(2)); Fz;
1220 1.1.1.1.8.2 tls
1221 1.1.1.1.8.2 tls /** 0111 1101 xor %0, %e1%1 */
1222 1.1.1.1.8.2 tls ID(xor); DR(A); SM(HL, 0); Fz;
1223 1.1.1.1.8.2 tls
1224 1.1.1.1.8.2 tls /** 0110 0001 1111 0000 xor %0, %e1%1 */
1225 1.1.1.1.8.2 tls ID(xor); DR(A); SM2(HL, B, 0); Fz;
1226 1.1.1.1.8.2 tls
1227 1.1.1.1.8.2 tls /** 0111 1110 xor %0, %e1%1 */
1228 1.1.1.1.8.2 tls ID(xor); DR(A); SM(HL, IMMU(1)); Fz;
1229 1.1.1.1.8.2 tls
1230 1.1.1.1.8.2 tls /** 0110 0001 1111 0010 xor %0, %e1%1 */
1231 1.1.1.1.8.2 tls ID(xor); DR(A); SM2(HL, C, 0); Fz;
1232 1.1.1.1.8.2 tls
1233 1.1.1.1.8.2 tls /** 0111 1100 xor %0, #%1 */
1234 1.1.1.1.8.2 tls ID(xor); DR(A); SC(IMMU(1)); Fz;
1235 1.1.1.1.8.2 tls
1236 1.1.1.1.8.2 tls /** 0110 0001 0111 1rba xor %0, %1 */
1237 1.1.1.1.8.2 tls ID(xor); DR(A); SRB(rba); Fz;
1238 1.1.1.1.8.2 tls
1239 1.1.1.1.8.2 tls /** 0110 0001 0111 0reg xor %0, %1 */
1240 1.1.1.1.8.2 tls ID(xor); DRB(reg); SR(A); Fz;
1241 1.1.1.1.8.2 tls
1242 1.1.1.1.8.2 tls /** 0111 1011 xor %0, %1 */
1243 1.1.1.1.8.2 tls ID(xor); DR(A); SM(None, SADDR); Fz;
1244 1.1.1.1.8.2 tls
1245 1.1.1.1.8.2 tls /** 0111 1010 xor %0, #%1 */
1246 1.1.1.1.8.2 tls ID(xor); DM(None, SADDR); SC(IMMU(1)); Fz;
1247 1.1.1.1.8.2 tls
1248 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
1249 1.1.1.1.8.2 tls
1250 1.1.1.1.8.2 tls /** 0111 0001 1bit 0111 xor1 cy, %e1%1 */
1251 1.1.1.1.8.2 tls ID(xor); DCY(); SM(HL, 0); SB(bit);
1252 1.1.1.1.8.2 tls
1253 1.1.1.1.8.2 tls /** 0111 0001 1bit 1111 xor1 cy, %1 */
1254 1.1.1.1.8.2 tls ID(xor); DCY(); SR(A); SB(bit);
1255 1.1.1.1.8.2 tls
1256 1.1.1.1.8.2 tls /** 0111 0001 0bit 1111 xor1 cy, %s1 */
1257 1.1.1.1.8.2 tls ID(xor); DCY(); SM(None, SFR); SB(bit);
1258 1.1.1.1.8.2 tls
1259 1.1.1.1.8.2 tls /** 0111 0001 0bit 0111 xor1 cy, %s1 */
1260 1.1.1.1.8.2 tls ID(xor); DCY(); SM(None, SADDR); SB(bit);
1261 1.1.1.1.8.2 tls
1262 1.1.1.1.8.2 tls /*----------------------------------------------------------------------*/
1263 1.1.1.1.8.2 tls
1264 1.1.1.1.8.2 tls /** */
1265 1.1.1.1.8.2 tls
1266 1.1.1.1.8.2 tls return rl78->n_bytes;
1267 1.1.1.1.8.2 tls }
1268