1 1.1 christos /* -*- c -*- */ 2 1.11 christos /* Copyright (C) 2012-2024 Free Software Foundation, Inc. 3 1.1 christos Contributed by Red Hat. 4 1.1 christos Written by DJ Delorie. 5 1.1 christos 6 1.1 christos This file is part of the GNU opcodes library. 7 1.1 christos 8 1.1 christos This library is free software; you can redistribute it and/or modify 9 1.1 christos it under the terms of the GNU General Public License as published by 10 1.1 christos the Free Software Foundation; either version 3, or (at your option) 11 1.1 christos any later version. 12 1.1 christos 13 1.1 christos It is distributed in the hope that it will be useful, but WITHOUT 14 1.1 christos ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 15 1.1 christos or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public 16 1.1 christos License for more details. 17 1.1 christos 18 1.1 christos You should have received a copy of the GNU General Public License 19 1.1 christos along with this program; if not, write to the Free Software 20 1.1 christos Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, 21 1.1 christos MA 02110-1301, USA. */ 22 1.1 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.8 christos #include "bfd.h" 28 1.8 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.8 christos 55 1.8 christos #define OP_BUF_LEN 20 56 1.8 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.8 christos opcodes_error_handler 105 1.8 christos /* xgettext:c-format */ 106 1.8 christos (_("internal error: immediate() called with invalid byte count %d"), 107 1.8 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.5 christos void * ptr, 174 1.5 christos RL78_Dis_Isa isa) 175 1.1 christos { 176 1.1 christos LocalData lds, * ld = &lds; 177 1.8 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 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 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 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.5 christos /** 0000 1110 add %0, %ea1 */ 216 1.1 christos ID(add); DR(A); SM(HL, IMMU(1)); Fzac; 217 1.6 christos 218 1.1 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 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 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 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 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.5 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 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.5 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 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 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 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.5 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 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 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 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 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 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 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 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 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 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 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 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 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 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.5 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 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.5 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 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.5 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 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.5 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 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.5 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 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.5 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 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.5 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 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 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.5 christos /** 1001 1001 mov %e0, %1 */ 621 1.1 christos ID(mov); DM(DE, 0); SR(A); 622 1.1 christos 623 1.6 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.6 christos /** 1001 1010 mov %ea0, %1 */ 627 1.1 christos ID(mov); DM(DE, IMMU(1)); SR(A); 628 1.1 christos 629 1.5 christos /** 1001 1011 mov %e0, %1 */ 630 1.1 christos ID(mov); DM(HL, 0); SR(A); 631 1.1 christos 632 1.1 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.5 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.5 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 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.6 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.6 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 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 christos /** 1000 1001 mov %0, %e1 */ 654 1.1 christos ID(mov); DR(A); SM(DE, 0); 655 1.1 christos 656 1.6 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 christos /** 1000 1011 mov %0, %e1 */ 660 1.1 christos ID(mov); DR(A); SM(HL, 0); 661 1.1 christos 662 1.5 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 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 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.6 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 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 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 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 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 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 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.6 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.6 christos ID(mov); DR(ES); SR(A); 727 1.1 christos 728 1.1 christos /** 0110 0001 1011 1000 mov %0, %1 */ 729 1.6 christos ID(mov); DR(ES); SM(None, SADDR); 730 1.1 christos 731 1.1 christos /** 0001 1001 mov %e0, #%1 */ 732 1.6 christos ID(mov); DM(B, IMMU(2)); SC(IMMU(1)); 733 1.1 christos 734 1.1 christos /** 0001 1000 mov %e0, %1 */ 735 1.6 christos ID(mov); DM(B, IMMU(2)); SR(A); 736 1.1 christos 737 1.1 christos /** 0011 1001 mov %e0, #%1 */ 738 1.6 christos ID(mov); DM(BC, IMMU(2)); SC(IMMU(1)); 739 1.1 christos 740 1.1 christos /** 0100 1000 mov %e0, %1 */ 741 1.6 christos ID(mov); DM(BC, IMMU(2)); SR(A); 742 1.1 christos 743 1.1 christos /** 0011 1000 mov %e0, #%1 */ 744 1.6 christos ID(mov); DM(C, IMMU(2)); SC(IMMU(1)); 745 1.1 christos 746 1.1 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.5 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 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 christos case 0x0b: 781 1.1 christos rl78->syntax = "divwu"; ID(divwu); 782 1.1 christos break; 783 1.1 christos } 784 1.1 christos 785 1.6 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 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 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 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 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.5 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 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 christos /** 1011 1001 movw %e0, %1 */ 825 1.1 christos ID(mov); W(); DM(DE, 0); SR(AX); 826 1.1 christos 827 1.6 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 christos /** 1011 1011 movw %e0, %1 */ 831 1.1 christos ID(mov); W(); DM(HL, 0); SR(AX); 832 1.1 christos 833 1.5 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.6 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 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 christos /** 1010 1001 movw %0, %e1 */ 844 1.1 christos ID(mov); W(); DR(AX); SM(DE, 0); 845 1.1 christos 846 1.6 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 christos /** 1010 1011 movw %0, %e1 */ 850 1.1 christos ID(mov); W(); DR(AX); SM(HL, 0); 851 1.1 christos 852 1.5 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.6 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 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 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 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 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 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 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.6 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.6 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.6 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.6 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 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 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 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 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.5 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 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 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 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 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 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 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 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 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.5 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 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 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 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 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 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.5 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 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.5 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 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 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.6 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 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 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.5 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 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.6 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 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 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 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.5 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 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 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