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