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