trunk/src/emu/cpu/arcompact/arcompactdasm.c
| r242259 | r242260 | |
| 26 | 26 | |
| 27 | 27 | #define DASM_OPS_16 char *output, offs_t pc, UINT16 op, const UINT8* oprom |
| 28 | 28 | #define DASM_OPS_32 char *output, offs_t pc, UINT32 op, const UINT8* oprom |
| 29 | #define DASM_PARAMS output, pc, op, oprom |
| 29 | 30 | |
| 31 | #define LIMM_REG 62 |
| 32 | |
| 30 | 33 | int arcompact_handle04_00_dasm(DASM_OPS_32); |
| 31 | 34 | int arcompact_handle04_01_dasm(DASM_OPS_32); |
| 32 | 35 | int arcompact_handle04_02_dasm(DASM_OPS_32); |
| r242259 | r242260 | |
| 157 | 160 | int arcompact_handle04_2f_3e_dasm(DASM_OPS_32); |
| 158 | 161 | int arcompact_handle04_2f_3f_dasm(DASM_OPS_32); |
| 159 | 162 | |
| 163 | int arcompact_handle04_2f_3f_00_dasm(DASM_OPS_32); |
| 164 | int arcompact_handle04_2f_3f_01_dasm(DASM_OPS_32); |
| 165 | int arcompact_handle04_2f_3f_02_dasm(DASM_OPS_32); |
| 166 | int arcompact_handle04_2f_3f_03_dasm(DASM_OPS_32); |
| 167 | int arcompact_handle04_2f_3f_04_dasm(DASM_OPS_32); |
| 168 | int arcompact_handle04_2f_3f_05_dasm(DASM_OPS_32); |
| 169 | int arcompact_handle04_2f_3f_06_dasm(DASM_OPS_32); |
| 170 | int arcompact_handle04_2f_3f_07_dasm(DASM_OPS_32); |
| 171 | int arcompact_handle04_2f_3f_08_dasm(DASM_OPS_32); |
| 172 | int arcompact_handle04_2f_3f_09_dasm(DASM_OPS_32); |
| 173 | int arcompact_handle04_2f_3f_0a_dasm(DASM_OPS_32); |
| 174 | int arcompact_handle04_2f_3f_0b_dasm(DASM_OPS_32); |
| 175 | int arcompact_handle04_2f_3f_0c_dasm(DASM_OPS_32); |
| 176 | int arcompact_handle04_2f_3f_0d_dasm(DASM_OPS_32); |
| 177 | int arcompact_handle04_2f_3f_0e_dasm(DASM_OPS_32); |
| 178 | int arcompact_handle04_2f_3f_0f_dasm(DASM_OPS_32); |
| 179 | int arcompact_handle04_2f_3f_10_dasm(DASM_OPS_32); |
| 180 | int arcompact_handle04_2f_3f_11_dasm(DASM_OPS_32); |
| 181 | int arcompact_handle04_2f_3f_12_dasm(DASM_OPS_32); |
| 182 | int arcompact_handle04_2f_3f_13_dasm(DASM_OPS_32); |
| 183 | int arcompact_handle04_2f_3f_14_dasm(DASM_OPS_32); |
| 184 | int arcompact_handle04_2f_3f_15_dasm(DASM_OPS_32); |
| 185 | int arcompact_handle04_2f_3f_16_dasm(DASM_OPS_32); |
| 186 | int arcompact_handle04_2f_3f_17_dasm(DASM_OPS_32); |
| 187 | int arcompact_handle04_2f_3f_18_dasm(DASM_OPS_32); |
| 188 | int arcompact_handle04_2f_3f_19_dasm(DASM_OPS_32); |
| 189 | int arcompact_handle04_2f_3f_1a_dasm(DASM_OPS_32); |
| 190 | int arcompact_handle04_2f_3f_1b_dasm(DASM_OPS_32); |
| 191 | int arcompact_handle04_2f_3f_1c_dasm(DASM_OPS_32); |
| 192 | int arcompact_handle04_2f_3f_1d_dasm(DASM_OPS_32); |
| 193 | int arcompact_handle04_2f_3f_1e_dasm(DASM_OPS_32); |
| 194 | int arcompact_handle04_2f_3f_1f_dasm(DASM_OPS_32); |
| 195 | int arcompact_handle04_2f_3f_20_dasm(DASM_OPS_32); |
| 196 | int arcompact_handle04_2f_3f_21_dasm(DASM_OPS_32); |
| 197 | int arcompact_handle04_2f_3f_22_dasm(DASM_OPS_32); |
| 198 | int arcompact_handle04_2f_3f_23_dasm(DASM_OPS_32); |
| 199 | int arcompact_handle04_2f_3f_24_dasm(DASM_OPS_32); |
| 200 | int arcompact_handle04_2f_3f_25_dasm(DASM_OPS_32); |
| 201 | int arcompact_handle04_2f_3f_26_dasm(DASM_OPS_32); |
| 202 | int arcompact_handle04_2f_3f_27_dasm(DASM_OPS_32); |
| 203 | int arcompact_handle04_2f_3f_28_dasm(DASM_OPS_32); |
| 204 | int arcompact_handle04_2f_3f_29_dasm(DASM_OPS_32); |
| 205 | int arcompact_handle04_2f_3f_2a_dasm(DASM_OPS_32); |
| 206 | int arcompact_handle04_2f_3f_2b_dasm(DASM_OPS_32); |
| 207 | int arcompact_handle04_2f_3f_2c_dasm(DASM_OPS_32); |
| 208 | int arcompact_handle04_2f_3f_2d_dasm(DASM_OPS_32); |
| 209 | int arcompact_handle04_2f_3f_2e_dasm(DASM_OPS_32); |
| 210 | int arcompact_handle04_2f_3f_2f_dasm(DASM_OPS_32); |
| 211 | int arcompact_handle04_2f_3f_30_dasm(DASM_OPS_32); |
| 212 | int arcompact_handle04_2f_3f_31_dasm(DASM_OPS_32); |
| 213 | int arcompact_handle04_2f_3f_32_dasm(DASM_OPS_32); |
| 214 | int arcompact_handle04_2f_3f_33_dasm(DASM_OPS_32); |
| 215 | int arcompact_handle04_2f_3f_34_dasm(DASM_OPS_32); |
| 216 | int arcompact_handle04_2f_3f_35_dasm(DASM_OPS_32); |
| 217 | int arcompact_handle04_2f_3f_36_dasm(DASM_OPS_32); |
| 218 | int arcompact_handle04_2f_3f_37_dasm(DASM_OPS_32); |
| 219 | int arcompact_handle04_2f_3f_38_dasm(DASM_OPS_32); |
| 220 | int arcompact_handle04_2f_3f_39_dasm(DASM_OPS_32); |
| 221 | int arcompact_handle04_2f_3f_3a_dasm(DASM_OPS_32); |
| 222 | int arcompact_handle04_2f_3f_3b_dasm(DASM_OPS_32); |
| 223 | int arcompact_handle04_2f_3f_3c_dasm(DASM_OPS_32); |
| 224 | int arcompact_handle04_2f_3f_3d_dasm(DASM_OPS_32); |
| 225 | int arcompact_handle04_2f_3f_3e_dasm(DASM_OPS_32); |
| 226 | int arcompact_handle04_2f_3f_3f_dasm(DASM_OPS_32); |
| 227 | |
| 228 | int arcompact_handle0e_00_dasm(DASM_OPS_16); |
| 229 | int arcompact_handle0e_01_dasm(DASM_OPS_16); |
| 230 | int arcompact_handle0e_02_dasm(DASM_OPS_16); |
| 231 | int arcompact_handle0e_03_dasm(DASM_OPS_16); |
| 232 | |
| 160 | 233 | int arcompact_handle18_00_dasm(DASM_OPS_16); |
| 161 | 234 | int arcompact_handle18_01_dasm(DASM_OPS_16); |
| 162 | 235 | int arcompact_handle18_02_dasm(DASM_OPS_16); |
| r242259 | r242260 | |
| 508 | 581 | |
| 509 | 582 | switch (subinstr) |
| 510 | 583 | { |
| 511 | | case 0x00: size = arcompact_handle04_00_dasm(output, pc, op, oprom); break; // ADD |
| 512 | | case 0x01: size = arcompact_handle04_01_dasm(output, pc, op, oprom); break; // ADC |
| 513 | | case 0x02: size = arcompact_handle04_02_dasm(output, pc, op, oprom); break; // SUB |
| 514 | | case 0x03: size = arcompact_handle04_03_dasm(output, pc, op, oprom); break; // SBC |
| 515 | | case 0x04: size = arcompact_handle04_04_dasm(output, pc, op, oprom); break; // AND |
| 516 | | case 0x05: size = arcompact_handle04_05_dasm(output, pc, op, oprom); break; // OR |
| 517 | | case 0x06: size = arcompact_handle04_06_dasm(output, pc, op, oprom); break; // BIC |
| 518 | | case 0x07: size = arcompact_handle04_07_dasm(output, pc, op, oprom); break; // XOR |
| 519 | | case 0x08: size = arcompact_handle04_08_dasm(output, pc, op, oprom); break; // MAX |
| 520 | | case 0x09: size = arcompact_handle04_09_dasm(output, pc, op, oprom); break; // MIN |
| 521 | | case 0x0a: size = arcompact_handle04_0a_dasm(output, pc, op, oprom); break; // MOV |
| 522 | | case 0x0b: size = arcompact_handle04_0b_dasm(output, pc, op, oprom); break; // TST |
| 523 | | case 0x0c: size = arcompact_handle04_0c_dasm(output, pc, op, oprom); break; // CMP |
| 524 | | case 0x0d: size = arcompact_handle04_0d_dasm(output, pc, op, oprom); break; // RCMP |
| 525 | | case 0x0e: size = arcompact_handle04_0e_dasm(output, pc, op, oprom); break; // RSUB |
| 526 | | case 0x0f: size = arcompact_handle04_0f_dasm(output, pc, op, oprom); break; // BSET |
| 527 | | case 0x10: size = arcompact_handle04_10_dasm(output, pc, op, oprom); break; // BCLR |
| 528 | | case 0x11: size = arcompact_handle04_11_dasm(output, pc, op, oprom); break; // BTST |
| 529 | | case 0x12: size = arcompact_handle04_12_dasm(output, pc, op, oprom); break; // BXOR |
| 530 | | case 0x13: size = arcompact_handle04_13_dasm(output, pc, op, oprom); break; // BMSK |
| 531 | | case 0x14: size = arcompact_handle04_14_dasm(output, pc, op, oprom); break; // ADD1 |
| 532 | | case 0x15: size = arcompact_handle04_15_dasm(output, pc, op, oprom); break; // ADD2 |
| 533 | | case 0x16: size = arcompact_handle04_16_dasm(output, pc, op, oprom); break; // ADD3 |
| 534 | | case 0x17: size = arcompact_handle04_17_dasm(output, pc, op, oprom); break; // SUB1 |
| 535 | | case 0x18: size = arcompact_handle04_18_dasm(output, pc, op, oprom); break; // SUB2 |
| 536 | | case 0x19: size = arcompact_handle04_19_dasm(output, pc, op, oprom); break; // SUB3 |
| 537 | | case 0x1a: size = arcompact_handle04_1a_dasm(output, pc, op, oprom); break; // MPY * |
| 538 | | case 0x1b: size = arcompact_handle04_1b_dasm(output, pc, op, oprom); break; // MPYH * |
| 539 | | case 0x1c: size = arcompact_handle04_1c_dasm(output, pc, op, oprom); break; // MPYHU * |
| 540 | | case 0x1d: size = arcompact_handle04_1d_dasm(output, pc, op, oprom); break; // MPYU * |
| 541 | | case 0x1e: size = arcompact_handle04_1e_dasm(output, pc, op, oprom); break; // illegal |
| 542 | | case 0x1f: size = arcompact_handle04_1f_dasm(output, pc, op, oprom); break; // illegal |
| 543 | | case 0x20: size = arcompact_handle04_20_dasm(output, pc, op, oprom); break; // Jcc |
| 544 | | case 0x21: size = arcompact_handle04_21_dasm(output, pc, op, oprom); break; // Jcc.D |
| 545 | | case 0x22: size = arcompact_handle04_22_dasm(output, pc, op, oprom); break; // JLcc |
| 546 | | case 0x23: size = arcompact_handle04_23_dasm(output, pc, op, oprom); break; // JLcc.D |
| 547 | | case 0x24: size = arcompact_handle04_24_dasm(output, pc, op, oprom); break; // illegal |
| 548 | | case 0x25: size = arcompact_handle04_25_dasm(output, pc, op, oprom); break; // illegal |
| 549 | | case 0x26: size = arcompact_handle04_26_dasm(output, pc, op, oprom); break; // illegal |
| 550 | | case 0x27: size = arcompact_handle04_27_dasm(output, pc, op, oprom); break; // illegal |
| 551 | | case 0x28: size = arcompact_handle04_28_dasm(output, pc, op, oprom); break; // LPcc |
| 552 | | case 0x29: size = arcompact_handle04_29_dasm(output, pc, op, oprom); break; // FLAG |
| 553 | | case 0x2a: size = arcompact_handle04_2a_dasm(output, pc, op, oprom); break; // LR |
| 554 | | case 0x2b: size = arcompact_handle04_2b_dasm(output, pc, op, oprom); break; // SR |
| 555 | | case 0x2c: size = arcompact_handle04_2c_dasm(output, pc, op, oprom); break; // illegal |
| 556 | | case 0x2d: size = arcompact_handle04_2d_dasm(output, pc, op, oprom); break; // illegal |
| 557 | | case 0x2e: size = arcompact_handle04_2e_dasm(output, pc, op, oprom); break; // illegal |
| 558 | | case 0x2f: size = arcompact_handle04_2f_dasm(output, pc, op, oprom); break; // Sub Opcode |
| 559 | | case 0x30: size = arcompact_handle04_30_dasm(output, pc, op, oprom); break; // LD r-r |
| 560 | | case 0x31: size = arcompact_handle04_31_dasm(output, pc, op, oprom); break; // LD r-r |
| 561 | | case 0x32: size = arcompact_handle04_32_dasm(output, pc, op, oprom); break; // LD r-r |
| 562 | | case 0x33: size = arcompact_handle04_33_dasm(output, pc, op, oprom); break; // LD r-r |
| 563 | | case 0x34: size = arcompact_handle04_34_dasm(output, pc, op, oprom); break; // LD r-r |
| 564 | | case 0x35: size = arcompact_handle04_35_dasm(output, pc, op, oprom); break; // LD r-r |
| 565 | | case 0x36: size = arcompact_handle04_36_dasm(output, pc, op, oprom); break; // LD r-r |
| 566 | | case 0x37: size = arcompact_handle04_37_dasm(output, pc, op, oprom); break; // LD r-r |
| 567 | | case 0x38: size = arcompact_handle04_38_dasm(output, pc, op, oprom); break; // illegal |
| 568 | | case 0x39: size = arcompact_handle04_39_dasm(output, pc, op, oprom); break; // illegal |
| 569 | | case 0x3a: size = arcompact_handle04_3a_dasm(output, pc, op, oprom); break; // illegal |
| 570 | | case 0x3b: size = arcompact_handle04_3b_dasm(output, pc, op, oprom); break; // illegal |
| 571 | | case 0x3c: size = arcompact_handle04_3c_dasm(output, pc, op, oprom); break; // illegal |
| 572 | | case 0x3d: size = arcompact_handle04_3d_dasm(output, pc, op, oprom); break; // illegal |
| 573 | | case 0x3e: size = arcompact_handle04_3e_dasm(output, pc, op, oprom); break; // illegal |
| 574 | | case 0x3f: size = arcompact_handle04_3f_dasm(output, pc, op, oprom); break; // illegal |
| 584 | case 0x00: size = arcompact_handle04_00_dasm(DASM_PARAMS); break; // ADD |
| 585 | case 0x01: size = arcompact_handle04_01_dasm(DASM_PARAMS); break; // ADC |
| 586 | case 0x02: size = arcompact_handle04_02_dasm(DASM_PARAMS); break; // SUB |
| 587 | case 0x03: size = arcompact_handle04_03_dasm(DASM_PARAMS); break; // SBC |
| 588 | case 0x04: size = arcompact_handle04_04_dasm(DASM_PARAMS); break; // AND |
| 589 | case 0x05: size = arcompact_handle04_05_dasm(DASM_PARAMS); break; // OR |
| 590 | case 0x06: size = arcompact_handle04_06_dasm(DASM_PARAMS); break; // BIC |
| 591 | case 0x07: size = arcompact_handle04_07_dasm(DASM_PARAMS); break; // XOR |
| 592 | case 0x08: size = arcompact_handle04_08_dasm(DASM_PARAMS); break; // MAX |
| 593 | case 0x09: size = arcompact_handle04_09_dasm(DASM_PARAMS); break; // MIN |
| 594 | case 0x0a: size = arcompact_handle04_0a_dasm(DASM_PARAMS); break; // MOV |
| 595 | case 0x0b: size = arcompact_handle04_0b_dasm(DASM_PARAMS); break; // TST |
| 596 | case 0x0c: size = arcompact_handle04_0c_dasm(DASM_PARAMS); break; // CMP |
| 597 | case 0x0d: size = arcompact_handle04_0d_dasm(DASM_PARAMS); break; // RCMP |
| 598 | case 0x0e: size = arcompact_handle04_0e_dasm(DASM_PARAMS); break; // RSUB |
| 599 | case 0x0f: size = arcompact_handle04_0f_dasm(DASM_PARAMS); break; // BSET |
| 600 | case 0x10: size = arcompact_handle04_10_dasm(DASM_PARAMS); break; // BCLR |
| 601 | case 0x11: size = arcompact_handle04_11_dasm(DASM_PARAMS); break; // BTST |
| 602 | case 0x12: size = arcompact_handle04_12_dasm(DASM_PARAMS); break; // BXOR |
| 603 | case 0x13: size = arcompact_handle04_13_dasm(DASM_PARAMS); break; // BMSK |
| 604 | case 0x14: size = arcompact_handle04_14_dasm(DASM_PARAMS); break; // ADD1 |
| 605 | case 0x15: size = arcompact_handle04_15_dasm(DASM_PARAMS); break; // ADD2 |
| 606 | case 0x16: size = arcompact_handle04_16_dasm(DASM_PARAMS); break; // ADD3 |
| 607 | case 0x17: size = arcompact_handle04_17_dasm(DASM_PARAMS); break; // SUB1 |
| 608 | case 0x18: size = arcompact_handle04_18_dasm(DASM_PARAMS); break; // SUB2 |
| 609 | case 0x19: size = arcompact_handle04_19_dasm(DASM_PARAMS); break; // SUB3 |
| 610 | case 0x1a: size = arcompact_handle04_1a_dasm(DASM_PARAMS); break; // MPY * |
| 611 | case 0x1b: size = arcompact_handle04_1b_dasm(DASM_PARAMS); break; // MPYH * |
| 612 | case 0x1c: size = arcompact_handle04_1c_dasm(DASM_PARAMS); break; // MPYHU * |
| 613 | case 0x1d: size = arcompact_handle04_1d_dasm(DASM_PARAMS); break; // MPYU * |
| 614 | case 0x1e: size = arcompact_handle04_1e_dasm(DASM_PARAMS); break; // illegal |
| 615 | case 0x1f: size = arcompact_handle04_1f_dasm(DASM_PARAMS); break; // illegal |
| 616 | case 0x20: size = arcompact_handle04_20_dasm(DASM_PARAMS); break; // Jcc |
| 617 | case 0x21: size = arcompact_handle04_21_dasm(DASM_PARAMS); break; // Jcc.D |
| 618 | case 0x22: size = arcompact_handle04_22_dasm(DASM_PARAMS); break; // JLcc |
| 619 | case 0x23: size = arcompact_handle04_23_dasm(DASM_PARAMS); break; // JLcc.D |
| 620 | case 0x24: size = arcompact_handle04_24_dasm(DASM_PARAMS); break; // illegal |
| 621 | case 0x25: size = arcompact_handle04_25_dasm(DASM_PARAMS); break; // illegal |
| 622 | case 0x26: size = arcompact_handle04_26_dasm(DASM_PARAMS); break; // illegal |
| 623 | case 0x27: size = arcompact_handle04_27_dasm(DASM_PARAMS); break; // illegal |
| 624 | case 0x28: size = arcompact_handle04_28_dasm(DASM_PARAMS); break; // LPcc |
| 625 | case 0x29: size = arcompact_handle04_29_dasm(DASM_PARAMS); break; // FLAG |
| 626 | case 0x2a: size = arcompact_handle04_2a_dasm(DASM_PARAMS); break; // LR |
| 627 | case 0x2b: size = arcompact_handle04_2b_dasm(DASM_PARAMS); break; // SR |
| 628 | case 0x2c: size = arcompact_handle04_2c_dasm(DASM_PARAMS); break; // illegal |
| 629 | case 0x2d: size = arcompact_handle04_2d_dasm(DASM_PARAMS); break; // illegal |
| 630 | case 0x2e: size = arcompact_handle04_2e_dasm(DASM_PARAMS); break; // illegal |
| 631 | case 0x2f: size = arcompact_handle04_2f_dasm(DASM_PARAMS); break; // Sub Opcode |
| 632 | case 0x30: size = arcompact_handle04_30_dasm(DASM_PARAMS); break; // LD r-r |
| 633 | case 0x31: size = arcompact_handle04_31_dasm(DASM_PARAMS); break; // LD r-r |
| 634 | case 0x32: size = arcompact_handle04_32_dasm(DASM_PARAMS); break; // LD r-r |
| 635 | case 0x33: size = arcompact_handle04_33_dasm(DASM_PARAMS); break; // LD r-r |
| 636 | case 0x34: size = arcompact_handle04_34_dasm(DASM_PARAMS); break; // LD r-r |
| 637 | case 0x35: size = arcompact_handle04_35_dasm(DASM_PARAMS); break; // LD r-r |
| 638 | case 0x36: size = arcompact_handle04_36_dasm(DASM_PARAMS); break; // LD r-r |
| 639 | case 0x37: size = arcompact_handle04_37_dasm(DASM_PARAMS); break; // LD r-r |
| 640 | case 0x38: size = arcompact_handle04_38_dasm(DASM_PARAMS); break; // illegal |
| 641 | case 0x39: size = arcompact_handle04_39_dasm(DASM_PARAMS); break; // illegal |
| 642 | case 0x3a: size = arcompact_handle04_3a_dasm(DASM_PARAMS); break; // illegal |
| 643 | case 0x3b: size = arcompact_handle04_3b_dasm(DASM_PARAMS); break; // illegal |
| 644 | case 0x3c: size = arcompact_handle04_3c_dasm(DASM_PARAMS); break; // illegal |
| 645 | case 0x3d: size = arcompact_handle04_3d_dasm(DASM_PARAMS); break; // illegal |
| 646 | case 0x3e: size = arcompact_handle04_3e_dasm(DASM_PARAMS); break; // illegal |
| 647 | case 0x3f: size = arcompact_handle04_3f_dasm(DASM_PARAMS); break; // illegal |
| 575 | 648 | } |
| 576 | 649 | |
| 577 | 650 | return size; |
| r242259 | r242260 | |
| 633 | 706 | |
| 634 | 707 | switch (subinstr2) |
| 635 | 708 | { |
| 636 | | case 0x00: size = arcompact_handle04_2f_00_dasm(output, pc, op, oprom); break; // ASL |
| 637 | | case 0x01: size = arcompact_handle04_2f_01_dasm(output, pc, op, oprom); break; // ASR |
| 638 | | case 0x02: size = arcompact_handle04_2f_02_dasm(output, pc, op, oprom); break; // LSR |
| 639 | | case 0x03: size = arcompact_handle04_2f_03_dasm(output, pc, op, oprom); break; // ROR |
| 640 | | case 0x04: size = arcompact_handle04_2f_04_dasm(output, pc, op, oprom); break; // RCC |
| 641 | | case 0x05: size = arcompact_handle04_2f_05_dasm(output, pc, op, oprom); break; // SEXB |
| 642 | | case 0x06: size = arcompact_handle04_2f_06_dasm(output, pc, op, oprom); break; // SEXW |
| 643 | | case 0x07: size = arcompact_handle04_2f_07_dasm(output, pc, op, oprom); break; // EXTB |
| 644 | | case 0x08: size = arcompact_handle04_2f_08_dasm(output, pc, op, oprom); break; // EXTW |
| 645 | | case 0x09: size = arcompact_handle04_2f_09_dasm(output, pc, op, oprom); break; // ABS |
| 646 | | case 0x0a: size = arcompact_handle04_2f_0a_dasm(output, pc, op, oprom); break; // NOT |
| 647 | | case 0x0b: size = arcompact_handle04_2f_0b_dasm(output, pc, op, oprom); break; // RLC |
| 648 | | case 0x0c: size = arcompact_handle04_2f_0c_dasm(output, pc, op, oprom); break; // EX |
| 649 | | case 0x0d: size = arcompact_handle04_2f_0d_dasm(output, pc, op, oprom); break; // illegal |
| 650 | | case 0x0e: size = arcompact_handle04_2f_0e_dasm(output, pc, op, oprom); break; // illegal |
| 651 | | case 0x0f: size = arcompact_handle04_2f_0f_dasm(output, pc, op, oprom); break; // illegal |
| 652 | | case 0x10: size = arcompact_handle04_2f_10_dasm(output, pc, op, oprom); break; // illegal |
| 653 | | case 0x11: size = arcompact_handle04_2f_11_dasm(output, pc, op, oprom); break; // illegal |
| 654 | | case 0x12: size = arcompact_handle04_2f_12_dasm(output, pc, op, oprom); break; // illegal |
| 655 | | case 0x13: size = arcompact_handle04_2f_13_dasm(output, pc, op, oprom); break; // illegal |
| 656 | | case 0x14: size = arcompact_handle04_2f_14_dasm(output, pc, op, oprom); break; // illegal |
| 657 | | case 0x15: size = arcompact_handle04_2f_15_dasm(output, pc, op, oprom); break; // illegal |
| 658 | | case 0x16: size = arcompact_handle04_2f_16_dasm(output, pc, op, oprom); break; // illegal |
| 659 | | case 0x17: size = arcompact_handle04_2f_17_dasm(output, pc, op, oprom); break; // illegal |
| 660 | | case 0x18: size = arcompact_handle04_2f_18_dasm(output, pc, op, oprom); break; // illegal |
| 661 | | case 0x19: size = arcompact_handle04_2f_19_dasm(output, pc, op, oprom); break; // illegal |
| 662 | | case 0x1a: size = arcompact_handle04_2f_1a_dasm(output, pc, op, oprom); break; // illegal |
| 663 | | case 0x1b: size = arcompact_handle04_2f_1b_dasm(output, pc, op, oprom); break; // illegal |
| 664 | | case 0x1c: size = arcompact_handle04_2f_1c_dasm(output, pc, op, oprom); break; // illegal |
| 665 | | case 0x1d: size = arcompact_handle04_2f_1d_dasm(output, pc, op, oprom); break; // illegal |
| 666 | | case 0x1e: size = arcompact_handle04_2f_1e_dasm(output, pc, op, oprom); break; // illegal |
| 667 | | case 0x1f: size = arcompact_handle04_2f_1f_dasm(output, pc, op, oprom); break; // illegal |
| 668 | | case 0x20: size = arcompact_handle04_2f_20_dasm(output, pc, op, oprom); break; // illegal |
| 669 | | case 0x21: size = arcompact_handle04_2f_21_dasm(output, pc, op, oprom); break; // illegal |
| 670 | | case 0x22: size = arcompact_handle04_2f_22_dasm(output, pc, op, oprom); break; // illegal |
| 671 | | case 0x23: size = arcompact_handle04_2f_23_dasm(output, pc, op, oprom); break; // illegal |
| 672 | | case 0x24: size = arcompact_handle04_2f_24_dasm(output, pc, op, oprom); break; // illegal |
| 673 | | case 0x25: size = arcompact_handle04_2f_25_dasm(output, pc, op, oprom); break; // illegal |
| 674 | | case 0x26: size = arcompact_handle04_2f_26_dasm(output, pc, op, oprom); break; // illegal |
| 675 | | case 0x27: size = arcompact_handle04_2f_27_dasm(output, pc, op, oprom); break; // illegal |
| 676 | | case 0x28: size = arcompact_handle04_2f_28_dasm(output, pc, op, oprom); break; // illegal |
| 677 | | case 0x29: size = arcompact_handle04_2f_29_dasm(output, pc, op, oprom); break; // illegal |
| 678 | | case 0x2a: size = arcompact_handle04_2f_2a_dasm(output, pc, op, oprom); break; // illegal |
| 679 | | case 0x2b: size = arcompact_handle04_2f_2b_dasm(output, pc, op, oprom); break; // illegal |
| 680 | | case 0x2c: size = arcompact_handle04_2f_2c_dasm(output, pc, op, oprom); break; // illegal |
| 681 | | case 0x2d: size = arcompact_handle04_2f_2d_dasm(output, pc, op, oprom); break; // illegal |
| 682 | | case 0x2e: size = arcompact_handle04_2f_2e_dasm(output, pc, op, oprom); break; // illegal |
| 683 | | case 0x2f: size = arcompact_handle04_2f_2f_dasm(output, pc, op, oprom); break; // illegal |
| 684 | | case 0x30: size = arcompact_handle04_2f_30_dasm(output, pc, op, oprom); break; // illegal |
| 685 | | case 0x31: size = arcompact_handle04_2f_31_dasm(output, pc, op, oprom); break; // illegal |
| 686 | | case 0x32: size = arcompact_handle04_2f_32_dasm(output, pc, op, oprom); break; // illegal |
| 687 | | case 0x33: size = arcompact_handle04_2f_33_dasm(output, pc, op, oprom); break; // illegal |
| 688 | | case 0x34: size = arcompact_handle04_2f_34_dasm(output, pc, op, oprom); break; // illegal |
| 689 | | case 0x35: size = arcompact_handle04_2f_35_dasm(output, pc, op, oprom); break; // illegal |
| 690 | | case 0x36: size = arcompact_handle04_2f_36_dasm(output, pc, op, oprom); break; // illegal |
| 691 | | case 0x37: size = arcompact_handle04_2f_37_dasm(output, pc, op, oprom); break; // illegal |
| 692 | | case 0x38: size = arcompact_handle04_2f_38_dasm(output, pc, op, oprom); break; // illegal |
| 693 | | case 0x39: size = arcompact_handle04_2f_39_dasm(output, pc, op, oprom); break; // illegal |
| 694 | | case 0x3a: size = arcompact_handle04_2f_3a_dasm(output, pc, op, oprom); break; // illegal |
| 695 | | case 0x3b: size = arcompact_handle04_2f_3b_dasm(output, pc, op, oprom); break; // illegal |
| 696 | | case 0x3c: size = arcompact_handle04_2f_3c_dasm(output, pc, op, oprom); break; // illegal |
| 697 | | case 0x3d: size = arcompact_handle04_2f_3d_dasm(output, pc, op, oprom); break; // illegal |
| 698 | | case 0x3e: size = arcompact_handle04_2f_3e_dasm(output, pc, op, oprom); break; // illegal |
| 699 | | case 0x3f: size = arcompact_handle04_2f_3f_dasm(output, pc, op, oprom); break; // ZOPs (Zero Operand Opcodes) |
| 709 | case 0x00: size = arcompact_handle04_2f_00_dasm(DASM_PARAMS); break; // ASL |
| 710 | case 0x01: size = arcompact_handle04_2f_01_dasm(DASM_PARAMS); break; // ASR |
| 711 | case 0x02: size = arcompact_handle04_2f_02_dasm(DASM_PARAMS); break; // LSR |
| 712 | case 0x03: size = arcompact_handle04_2f_03_dasm(DASM_PARAMS); break; // ROR |
| 713 | case 0x04: size = arcompact_handle04_2f_04_dasm(DASM_PARAMS); break; // RCC |
| 714 | case 0x05: size = arcompact_handle04_2f_05_dasm(DASM_PARAMS); break; // SEXB |
| 715 | case 0x06: size = arcompact_handle04_2f_06_dasm(DASM_PARAMS); break; // SEXW |
| 716 | case 0x07: size = arcompact_handle04_2f_07_dasm(DASM_PARAMS); break; // EXTB |
| 717 | case 0x08: size = arcompact_handle04_2f_08_dasm(DASM_PARAMS); break; // EXTW |
| 718 | case 0x09: size = arcompact_handle04_2f_09_dasm(DASM_PARAMS); break; // ABS |
| 719 | case 0x0a: size = arcompact_handle04_2f_0a_dasm(DASM_PARAMS); break; // NOT |
| 720 | case 0x0b: size = arcompact_handle04_2f_0b_dasm(DASM_PARAMS); break; // RLC |
| 721 | case 0x0c: size = arcompact_handle04_2f_0c_dasm(DASM_PARAMS); break; // EX |
| 722 | case 0x0d: size = arcompact_handle04_2f_0d_dasm(DASM_PARAMS); break; // illegal |
| 723 | case 0x0e: size = arcompact_handle04_2f_0e_dasm(DASM_PARAMS); break; // illegal |
| 724 | case 0x0f: size = arcompact_handle04_2f_0f_dasm(DASM_PARAMS); break; // illegal |
| 725 | case 0x10: size = arcompact_handle04_2f_10_dasm(DASM_PARAMS); break; // illegal |
| 726 | case 0x11: size = arcompact_handle04_2f_11_dasm(DASM_PARAMS); break; // illegal |
| 727 | case 0x12: size = arcompact_handle04_2f_12_dasm(DASM_PARAMS); break; // illegal |
| 728 | case 0x13: size = arcompact_handle04_2f_13_dasm(DASM_PARAMS); break; // illegal |
| 729 | case 0x14: size = arcompact_handle04_2f_14_dasm(DASM_PARAMS); break; // illegal |
| 730 | case 0x15: size = arcompact_handle04_2f_15_dasm(DASM_PARAMS); break; // illegal |
| 731 | case 0x16: size = arcompact_handle04_2f_16_dasm(DASM_PARAMS); break; // illegal |
| 732 | case 0x17: size = arcompact_handle04_2f_17_dasm(DASM_PARAMS); break; // illegal |
| 733 | case 0x18: size = arcompact_handle04_2f_18_dasm(DASM_PARAMS); break; // illegal |
| 734 | case 0x19: size = arcompact_handle04_2f_19_dasm(DASM_PARAMS); break; // illegal |
| 735 | case 0x1a: size = arcompact_handle04_2f_1a_dasm(DASM_PARAMS); break; // illegal |
| 736 | case 0x1b: size = arcompact_handle04_2f_1b_dasm(DASM_PARAMS); break; // illegal |
| 737 | case 0x1c: size = arcompact_handle04_2f_1c_dasm(DASM_PARAMS); break; // illegal |
| 738 | case 0x1d: size = arcompact_handle04_2f_1d_dasm(DASM_PARAMS); break; // illegal |
| 739 | case 0x1e: size = arcompact_handle04_2f_1e_dasm(DASM_PARAMS); break; // illegal |
| 740 | case 0x1f: size = arcompact_handle04_2f_1f_dasm(DASM_PARAMS); break; // illegal |
| 741 | case 0x20: size = arcompact_handle04_2f_20_dasm(DASM_PARAMS); break; // illegal |
| 742 | case 0x21: size = arcompact_handle04_2f_21_dasm(DASM_PARAMS); break; // illegal |
| 743 | case 0x22: size = arcompact_handle04_2f_22_dasm(DASM_PARAMS); break; // illegal |
| 744 | case 0x23: size = arcompact_handle04_2f_23_dasm(DASM_PARAMS); break; // illegal |
| 745 | case 0x24: size = arcompact_handle04_2f_24_dasm(DASM_PARAMS); break; // illegal |
| 746 | case 0x25: size = arcompact_handle04_2f_25_dasm(DASM_PARAMS); break; // illegal |
| 747 | case 0x26: size = arcompact_handle04_2f_26_dasm(DASM_PARAMS); break; // illegal |
| 748 | case 0x27: size = arcompact_handle04_2f_27_dasm(DASM_PARAMS); break; // illegal |
| 749 | case 0x28: size = arcompact_handle04_2f_28_dasm(DASM_PARAMS); break; // illegal |
| 750 | case 0x29: size = arcompact_handle04_2f_29_dasm(DASM_PARAMS); break; // illegal |
| 751 | case 0x2a: size = arcompact_handle04_2f_2a_dasm(DASM_PARAMS); break; // illegal |
| 752 | case 0x2b: size = arcompact_handle04_2f_2b_dasm(DASM_PARAMS); break; // illegal |
| 753 | case 0x2c: size = arcompact_handle04_2f_2c_dasm(DASM_PARAMS); break; // illegal |
| 754 | case 0x2d: size = arcompact_handle04_2f_2d_dasm(DASM_PARAMS); break; // illegal |
| 755 | case 0x2e: size = arcompact_handle04_2f_2e_dasm(DASM_PARAMS); break; // illegal |
| 756 | case 0x2f: size = arcompact_handle04_2f_2f_dasm(DASM_PARAMS); break; // illegal |
| 757 | case 0x30: size = arcompact_handle04_2f_30_dasm(DASM_PARAMS); break; // illegal |
| 758 | case 0x31: size = arcompact_handle04_2f_31_dasm(DASM_PARAMS); break; // illegal |
| 759 | case 0x32: size = arcompact_handle04_2f_32_dasm(DASM_PARAMS); break; // illegal |
| 760 | case 0x33: size = arcompact_handle04_2f_33_dasm(DASM_PARAMS); break; // illegal |
| 761 | case 0x34: size = arcompact_handle04_2f_34_dasm(DASM_PARAMS); break; // illegal |
| 762 | case 0x35: size = arcompact_handle04_2f_35_dasm(DASM_PARAMS); break; // illegal |
| 763 | case 0x36: size = arcompact_handle04_2f_36_dasm(DASM_PARAMS); break; // illegal |
| 764 | case 0x37: size = arcompact_handle04_2f_37_dasm(DASM_PARAMS); break; // illegal |
| 765 | case 0x38: size = arcompact_handle04_2f_38_dasm(DASM_PARAMS); break; // illegal |
| 766 | case 0x39: size = arcompact_handle04_2f_39_dasm(DASM_PARAMS); break; // illegal |
| 767 | case 0x3a: size = arcompact_handle04_2f_3a_dasm(DASM_PARAMS); break; // illegal |
| 768 | case 0x3b: size = arcompact_handle04_2f_3b_dasm(DASM_PARAMS); break; // illegal |
| 769 | case 0x3c: size = arcompact_handle04_2f_3c_dasm(DASM_PARAMS); break; // illegal |
| 770 | case 0x3d: size = arcompact_handle04_2f_3d_dasm(DASM_PARAMS); break; // illegal |
| 771 | case 0x3e: size = arcompact_handle04_2f_3e_dasm(DASM_PARAMS); break; // illegal |
| 772 | case 0x3f: size = arcompact_handle04_2f_3f_dasm(DASM_PARAMS); break; // ZOPs (Zero Operand Opcodes) |
| 700 | 773 | } |
| 701 | 774 | |
| 702 | 775 | return size; |
| r242259 | r242260 | |
| 766 | 839 | int arcompact_handle04_2f_3c_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3c> (%08x)", op); return 4;} |
| 767 | 840 | int arcompact_handle04_2f_3d_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3d> (%08x)", op); return 4;} |
| 768 | 841 | int arcompact_handle04_2f_3e_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3e> (%08x)", op); return 4;} |
| 769 | | int arcompact_handle04_2f_3f_dasm(DASM_OPS_32) { print("ZOPs (another table) (%08x)", op); return 4;} |
| 770 | 842 | |
| 843 | int arcompact_handle04_2f_3f_dasm(DASM_OPS_32) |
| 844 | { |
| 845 | int size = 4; |
| 846 | UINT8 subinstr3 = (op & 0x07000000) >> 24; |
| 847 | subinstr3 |= ((op & 0x00007000) >> 12) << 3; |
| 771 | 848 | |
| 849 | op &= ~0x07007000; |
| 772 | 850 | |
| 851 | switch (subinstr3) |
| 852 | { |
| 853 | case 0x00: size = arcompact_handle04_2f_3f_00_dasm(DASM_PARAMS); break; // illegal |
| 854 | case 0x01: size = arcompact_handle04_2f_3f_01_dasm(DASM_PARAMS); break; // SLEEP |
| 855 | case 0x02: size = arcompact_handle04_2f_3f_02_dasm(DASM_PARAMS); break; // SWI / TRAP9 |
| 856 | case 0x03: size = arcompact_handle04_2f_3f_03_dasm(DASM_PARAMS); break; // SYNC |
| 857 | case 0x04: size = arcompact_handle04_2f_3f_04_dasm(DASM_PARAMS); break; // RTIE |
| 858 | case 0x05: size = arcompact_handle04_2f_3f_05_dasm(DASM_PARAMS); break; // BRK |
| 859 | case 0x06: size = arcompact_handle04_2f_3f_06_dasm(DASM_PARAMS); break; // illegal |
| 860 | case 0x07: size = arcompact_handle04_2f_3f_07_dasm(DASM_PARAMS); break; // illegal |
| 861 | case 0x08: size = arcompact_handle04_2f_3f_08_dasm(DASM_PARAMS); break; // illegal |
| 862 | case 0x09: size = arcompact_handle04_2f_3f_09_dasm(DASM_PARAMS); break; // illegal |
| 863 | case 0x0a: size = arcompact_handle04_2f_3f_0a_dasm(DASM_PARAMS); break; // illegal |
| 864 | case 0x0b: size = arcompact_handle04_2f_3f_0b_dasm(DASM_PARAMS); break; // illegal |
| 865 | case 0x0c: size = arcompact_handle04_2f_3f_0c_dasm(DASM_PARAMS); break; // illegal |
| 866 | case 0x0d: size = arcompact_handle04_2f_3f_0d_dasm(DASM_PARAMS); break; // illegal |
| 867 | case 0x0e: size = arcompact_handle04_2f_3f_0e_dasm(DASM_PARAMS); break; // illegal |
| 868 | case 0x0f: size = arcompact_handle04_2f_3f_0f_dasm(DASM_PARAMS); break; // illegal |
| 869 | case 0x10: size = arcompact_handle04_2f_3f_10_dasm(DASM_PARAMS); break; // illegal |
| 870 | case 0x11: size = arcompact_handle04_2f_3f_11_dasm(DASM_PARAMS); break; // illegal |
| 871 | case 0x12: size = arcompact_handle04_2f_3f_12_dasm(DASM_PARAMS); break; // illegal |
| 872 | case 0x13: size = arcompact_handle04_2f_3f_13_dasm(DASM_PARAMS); break; // illegal |
| 873 | case 0x14: size = arcompact_handle04_2f_3f_14_dasm(DASM_PARAMS); break; // illegal |
| 874 | case 0x15: size = arcompact_handle04_2f_3f_15_dasm(DASM_PARAMS); break; // illegal |
| 875 | case 0x16: size = arcompact_handle04_2f_3f_16_dasm(DASM_PARAMS); break; // illegal |
| 876 | case 0x17: size = arcompact_handle04_2f_3f_17_dasm(DASM_PARAMS); break; // illegal |
| 877 | case 0x18: size = arcompact_handle04_2f_3f_18_dasm(DASM_PARAMS); break; // illegal |
| 878 | case 0x19: size = arcompact_handle04_2f_3f_19_dasm(DASM_PARAMS); break; // illegal |
| 879 | case 0x1a: size = arcompact_handle04_2f_3f_1a_dasm(DASM_PARAMS); break; // illegal |
| 880 | case 0x1b: size = arcompact_handle04_2f_3f_1b_dasm(DASM_PARAMS); break; // illegal |
| 881 | case 0x1c: size = arcompact_handle04_2f_3f_1c_dasm(DASM_PARAMS); break; // illegal |
| 882 | case 0x1d: size = arcompact_handle04_2f_3f_1d_dasm(DASM_PARAMS); break; // illegal |
| 883 | case 0x1e: size = arcompact_handle04_2f_3f_1e_dasm(DASM_PARAMS); break; // illegal |
| 884 | case 0x1f: size = arcompact_handle04_2f_3f_1f_dasm(DASM_PARAMS); break; // illegal |
| 885 | case 0x20: size = arcompact_handle04_2f_3f_20_dasm(DASM_PARAMS); break; // illegal |
| 886 | case 0x21: size = arcompact_handle04_2f_3f_21_dasm(DASM_PARAMS); break; // illegal |
| 887 | case 0x22: size = arcompact_handle04_2f_3f_22_dasm(DASM_PARAMS); break; // illegal |
| 888 | case 0x23: size = arcompact_handle04_2f_3f_23_dasm(DASM_PARAMS); break; // illegal |
| 889 | case 0x24: size = arcompact_handle04_2f_3f_24_dasm(DASM_PARAMS); break; // illegal |
| 890 | case 0x25: size = arcompact_handle04_2f_3f_25_dasm(DASM_PARAMS); break; // illegal |
| 891 | case 0x26: size = arcompact_handle04_2f_3f_26_dasm(DASM_PARAMS); break; // illegal |
| 892 | case 0x27: size = arcompact_handle04_2f_3f_27_dasm(DASM_PARAMS); break; // illegal |
| 893 | case 0x28: size = arcompact_handle04_2f_3f_28_dasm(DASM_PARAMS); break; // illegal |
| 894 | case 0x29: size = arcompact_handle04_2f_3f_29_dasm(DASM_PARAMS); break; // illegal |
| 895 | case 0x2a: size = arcompact_handle04_2f_3f_2a_dasm(DASM_PARAMS); break; // illegal |
| 896 | case 0x2b: size = arcompact_handle04_2f_3f_2b_dasm(DASM_PARAMS); break; // illegal |
| 897 | case 0x2c: size = arcompact_handle04_2f_3f_2c_dasm(DASM_PARAMS); break; // illegal |
| 898 | case 0x2d: size = arcompact_handle04_2f_3f_2d_dasm(DASM_PARAMS); break; // illegal |
| 899 | case 0x2e: size = arcompact_handle04_2f_3f_2e_dasm(DASM_PARAMS); break; // illegal |
| 900 | case 0x2f: size = arcompact_handle04_2f_3f_2f_dasm(DASM_PARAMS); break; // illegal |
| 901 | case 0x30: size = arcompact_handle04_2f_3f_30_dasm(DASM_PARAMS); break; // illegal |
| 902 | case 0x31: size = arcompact_handle04_2f_3f_31_dasm(DASM_PARAMS); break; // illegal |
| 903 | case 0x32: size = arcompact_handle04_2f_3f_32_dasm(DASM_PARAMS); break; // illegal |
| 904 | case 0x33: size = arcompact_handle04_2f_3f_33_dasm(DASM_PARAMS); break; // illegal |
| 905 | case 0x34: size = arcompact_handle04_2f_3f_34_dasm(DASM_PARAMS); break; // illegal |
| 906 | case 0x35: size = arcompact_handle04_2f_3f_35_dasm(DASM_PARAMS); break; // illegal |
| 907 | case 0x36: size = arcompact_handle04_2f_3f_36_dasm(DASM_PARAMS); break; // illegal |
| 908 | case 0x37: size = arcompact_handle04_2f_3f_37_dasm(DASM_PARAMS); break; // illegal |
| 909 | case 0x38: size = arcompact_handle04_2f_3f_38_dasm(DASM_PARAMS); break; // illegal |
| 910 | case 0x39: size = arcompact_handle04_2f_3f_39_dasm(DASM_PARAMS); break; // illegal |
| 911 | case 0x3a: size = arcompact_handle04_2f_3f_3a_dasm(DASM_PARAMS); break; // illegal |
| 912 | case 0x3b: size = arcompact_handle04_2f_3f_3b_dasm(DASM_PARAMS); break; // illegal |
| 913 | case 0x3c: size = arcompact_handle04_2f_3f_3c_dasm(DASM_PARAMS); break; // illegal |
| 914 | case 0x3d: size = arcompact_handle04_2f_3f_3d_dasm(DASM_PARAMS); break; // illegal |
| 915 | case 0x3e: size = arcompact_handle04_2f_3f_3e_dasm(DASM_PARAMS); break; // illegal |
| 916 | case 0x3f: size = arcompact_handle04_2f_3f_3f_dasm(DASM_PARAMS); break; // illegal |
| 917 | } |
| 773 | 918 | |
| 919 | return size; |
| 920 | } |
| 774 | 921 | |
| 922 | int arcompact_handle04_2f_3f_00_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_00> (%08x)", op); return 4;} |
| 923 | int arcompact_handle04_2f_3f_01_dasm(DASM_OPS_32) { print("SLEEP (%08x)", op); return 4;} |
| 924 | int arcompact_handle04_2f_3f_02_dasm(DASM_OPS_32) { print("SWI / TRAP0 (%08x)", op); return 4;} |
| 925 | int arcompact_handle04_2f_3f_03_dasm(DASM_OPS_32) { print("SYNC (%08x)", op); return 4;} |
| 926 | int arcompact_handle04_2f_3f_04_dasm(DASM_OPS_32) { print("RTIE (%08x)", op); return 4;} |
| 927 | int arcompact_handle04_2f_3f_05_dasm(DASM_OPS_32) { print("BRK (%08x)", op); return 4;} |
| 928 | int arcompact_handle04_2f_3f_06_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_06> (%08x)", op); return 4;} |
| 929 | int arcompact_handle04_2f_3f_07_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_07> (%08x)", op); return 4;} |
| 930 | int arcompact_handle04_2f_3f_08_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_08> (%08x)", op); return 4;} |
| 931 | int arcompact_handle04_2f_3f_09_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_09> (%08x)", op); return 4;} |
| 932 | int arcompact_handle04_2f_3f_0a_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_0a> (%08x)", op); return 4;} |
| 933 | int arcompact_handle04_2f_3f_0b_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_0b> (%08x)", op); return 4;} |
| 934 | int arcompact_handle04_2f_3f_0c_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_0c> (%08x)", op); return 4;} |
| 935 | int arcompact_handle04_2f_3f_0d_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_0d> (%08x)", op); return 4;} |
| 936 | int arcompact_handle04_2f_3f_0e_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_0e> (%08x)", op); return 4;} |
| 937 | int arcompact_handle04_2f_3f_0f_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_0f> (%08x)", op); return 4;} |
| 938 | int arcompact_handle04_2f_3f_10_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_10> (%08x)", op); return 4;} |
| 939 | int arcompact_handle04_2f_3f_11_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_11> (%08x)", op); return 4;} |
| 940 | int arcompact_handle04_2f_3f_12_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_12> (%08x)", op); return 4;} |
| 941 | int arcompact_handle04_2f_3f_13_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_13> (%08x)", op); return 4;} |
| 942 | int arcompact_handle04_2f_3f_14_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_14> (%08x)", op); return 4;} |
| 943 | int arcompact_handle04_2f_3f_15_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_15> (%08x)", op); return 4;} |
| 944 | int arcompact_handle04_2f_3f_16_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_16> (%08x)", op); return 4;} |
| 945 | int arcompact_handle04_2f_3f_17_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_17> (%08x)", op); return 4;} |
| 946 | int arcompact_handle04_2f_3f_18_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_18> (%08x)", op); return 4;} |
| 947 | int arcompact_handle04_2f_3f_19_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_19> (%08x)", op); return 4;} |
| 948 | int arcompact_handle04_2f_3f_1a_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_1a> (%08x)", op); return 4;} |
| 949 | int arcompact_handle04_2f_3f_1b_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_1b> (%08x)", op); return 4;} |
| 950 | int arcompact_handle04_2f_3f_1c_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_1c> (%08x)", op); return 4;} |
| 951 | int arcompact_handle04_2f_3f_1d_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_1d> (%08x)", op); return 4;} |
| 952 | int arcompact_handle04_2f_3f_1e_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_1e> (%08x)", op); return 4;} |
| 953 | int arcompact_handle04_2f_3f_1f_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_1f> (%08x)", op); return 4;} |
| 954 | int arcompact_handle04_2f_3f_20_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_20> (%08x)", op); return 4;} |
| 955 | int arcompact_handle04_2f_3f_21_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_21> (%08x)", op); return 4;} |
| 956 | int arcompact_handle04_2f_3f_22_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_22> (%08x)", op); return 4;} |
| 957 | int arcompact_handle04_2f_3f_23_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_23> (%08x)", op); return 4;} |
| 958 | int arcompact_handle04_2f_3f_24_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_24> (%08x)", op); return 4;} |
| 959 | int arcompact_handle04_2f_3f_25_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_25> (%08x)", op); return 4;} |
| 960 | int arcompact_handle04_2f_3f_26_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_26> (%08x)", op); return 4;} |
| 961 | int arcompact_handle04_2f_3f_27_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_27> (%08x)", op); return 4;} |
| 962 | int arcompact_handle04_2f_3f_28_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_28> (%08x)", op); return 4;} |
| 963 | int arcompact_handle04_2f_3f_29_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_29> (%08x)", op); return 4;} |
| 964 | int arcompact_handle04_2f_3f_2a_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_2a> (%08x)", op); return 4;} |
| 965 | int arcompact_handle04_2f_3f_2b_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_2b> (%08x)", op); return 4;} |
| 966 | int arcompact_handle04_2f_3f_2c_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_2c> (%08x)", op); return 4;} |
| 967 | int arcompact_handle04_2f_3f_2d_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_2d> (%08x)", op); return 4;} |
| 968 | int arcompact_handle04_2f_3f_2e_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_2e> (%08x)", op); return 4;} |
| 969 | int arcompact_handle04_2f_3f_2f_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_2f> (%08x)", op); return 4;} |
| 970 | int arcompact_handle04_2f_3f_30_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_30> (%08x)", op); return 4;} |
| 971 | int arcompact_handle04_2f_3f_31_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_31> (%08x)", op); return 4;} |
| 972 | int arcompact_handle04_2f_3f_32_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_32> (%08x)", op); return 4;} |
| 973 | int arcompact_handle04_2f_3f_33_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_33> (%08x)", op); return 4;} |
| 974 | int arcompact_handle04_2f_3f_34_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_34> (%08x)", op); return 4;} |
| 975 | int arcompact_handle04_2f_3f_35_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_35> (%08x)", op); return 4;} |
| 976 | int arcompact_handle04_2f_3f_36_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_36> (%08x)", op); return 4;} |
| 977 | int arcompact_handle04_2f_3f_37_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_37> (%08x)", op); return 4;} |
| 978 | int arcompact_handle04_2f_3f_38_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_38> (%08x)", op); return 4;} |
| 979 | int arcompact_handle04_2f_3f_39_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_39> (%08x)", op); return 4;} |
| 980 | int arcompact_handle04_2f_3f_3a_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_3a> (%08x)", op); return 4;} |
| 981 | int arcompact_handle04_2f_3f_3b_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_3b> (%08x)", op); return 4;} |
| 982 | int arcompact_handle04_2f_3f_3c_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_3c> (%08x)", op); return 4;} |
| 983 | int arcompact_handle04_2f_3f_3d_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_3d> (%08x)", op); return 4;} |
| 984 | int arcompact_handle04_2f_3f_3e_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_3e> (%08x)", op); return 4;} |
| 985 | int arcompact_handle04_2f_3f_3f_dasm(DASM_OPS_32) { print("<illegal 0x04_2f_3f_3f> (%08x)", op); return 4;} |
| 986 | |
| 987 | |
| 988 | |
| 989 | |
| 990 | |
| 991 | |
| 992 | |
| 993 | |
| 775 | 994 | int arcompact_handle04_30_dasm(DASM_OPS_32) { print("LD r-r (basecase 0x30) (%08x)", op); return 4;} |
| 776 | 995 | int arcompact_handle04_31_dasm(DASM_OPS_32) { print("LD r-r (basecase 0x31) (%08x)", op); return 4;} |
| 777 | 996 | int arcompact_handle04_32_dasm(DASM_OPS_32) { print("LD r-r (basecase 0x32) (%08x)", op); return 4;} |
| r242259 | r242260 | |
| 853 | 1072 | |
| 854 | 1073 | int arcompact_handle0e_dasm(DASM_OPS_16) |
| 855 | 1074 | { |
| 856 | | print("Mov/Cmp/Add (%04x)", op); |
| 857 | | return 2; |
| 1075 | int size = 2; |
| 1076 | UINT8 subinstr = (op & 0x0018) >> 3; |
| 1077 | op &= ~0x0018; |
| 1078 | |
| 1079 | switch (subinstr) |
| 1080 | { |
| 1081 | case 0x00: size = arcompact_handle0e_00_dasm(DASM_PARAMS); break; // ADD_S |
| 1082 | case 0x01: size = arcompact_handle0e_01_dasm(DASM_PARAMS); break; // MOV_S |
| 1083 | case 0x02: size = arcompact_handle0e_02_dasm(DASM_PARAMS); break; // CMP_S |
| 1084 | case 0x03: size = arcompact_handle0e_03_dasm(DASM_PARAMS); break; // MOV_S |
| 1085 | } |
| 1086 | return size; |
| 858 | 1087 | } |
| 859 | 1088 | |
| 1089 | |
| 1090 | #define GROUP_0e_GET_h \ |
| 1091 | h = ((op & 0x0007) << 3); \ |
| 1092 | h |= ((op & 0x00e0) >> 5); \ |
| 1093 | |
| 1094 | // this is as messed up as the rest of the 16-bit alignment in LE mode... |
| 1095 | |
| 1096 | #define GET_LIMM \ |
| 1097 | limm = oprom[6] | (oprom[7] << 8); \ |
| 1098 | limm |= (oprom[4] << 16) | (oprom[5] << 24); \ |
| 1099 | |
| 1100 | |
| 1101 | int arcompact_handle0e_00_dasm(DASM_OPS_16) |
| 1102 | { |
| 1103 | int h; |
| 1104 | int size = 2; |
| 1105 | |
| 1106 | GROUP_0e_GET_h; |
| 1107 | |
| 1108 | if (h == LIMM_REG) |
| 1109 | { |
| 1110 | UINT32 limm; |
| 1111 | GET_LIMM; |
| 1112 | size = 6; |
| 1113 | print("ADD_S b <- b + (%08x) (%04x)", limm, op); |
| 1114 | } |
| 1115 | else |
| 1116 | { |
| 1117 | |
| 1118 | print("ADD_S b <- b + (r%d) (%04x)", h, op); |
| 1119 | } |
| 1120 | |
| 1121 | return size; |
| 1122 | } |
| 1123 | |
| 1124 | int arcompact_handle0e_01_dasm(DASM_OPS_16) |
| 1125 | { |
| 1126 | int h; |
| 1127 | int size = 2; |
| 1128 | GROUP_0e_GET_h; |
| 1129 | |
| 1130 | if (h == LIMM_REG) |
| 1131 | { |
| 1132 | UINT32 limm; |
| 1133 | GET_LIMM; |
| 1134 | size = 6; |
| 1135 | print("MOV_S b <- (%08x) (%04x)", limm, op); |
| 1136 | } |
| 1137 | else |
| 1138 | { |
| 1139 | print("MOV_S b <- (r%d) (%04x)", h, op); |
| 1140 | } |
| 1141 | return size; |
| 1142 | } |
| 1143 | |
| 1144 | int arcompact_handle0e_02_dasm(DASM_OPS_16) |
| 1145 | { |
| 1146 | int h; |
| 1147 | int size = 2; |
| 1148 | GROUP_0e_GET_h; |
| 1149 | |
| 1150 | if (h == LIMM_REG) |
| 1151 | { |
| 1152 | UINT32 limm; |
| 1153 | GET_LIMM; |
| 1154 | size = 6; |
| 1155 | print("CMP_S b - (%08x) (%04x)", limm, op); |
| 1156 | } |
| 1157 | else |
| 1158 | { |
| 1159 | print("CMP_S b - (r%d) (%04x)", h, op); |
| 1160 | } |
| 1161 | return size; |
| 1162 | } |
| 1163 | |
| 1164 | int arcompact_handle0e_03_dasm(DASM_OPS_16) |
| 1165 | { |
| 1166 | int h; |
| 1167 | int size = 2; |
| 1168 | GROUP_0e_GET_h; |
| 1169 | |
| 1170 | if (h == LIMM_REG) |
| 1171 | { |
| 1172 | UINT32 limm; |
| 1173 | GET_LIMM; |
| 1174 | size = 6; |
| 1175 | print("MOV_S (%08x) <- b (%04x)", limm, op); |
| 1176 | } |
| 1177 | else |
| 1178 | { |
| 1179 | print("MOV_S (r%d) <- b (%04x)", h, op); |
| 1180 | } |
| 1181 | |
| 1182 | return size; |
| 1183 | } |
| 1184 | |
| 1185 | |
| 1186 | |
| 860 | 1187 | int arcompact_handle0f_dasm(DASM_OPS_16) |
| 861 | 1188 | { |
| 862 | 1189 | // General Register Instructions (16-bit) |
| r242259 | r242260 | |
| 958 | 1285 | |
| 959 | 1286 | switch (subinstr) |
| 960 | 1287 | { |
| 961 | | case 0x00: size = arcompact_handle18_00_dasm(output, pc, op, oprom); break; // LD_S (SP) |
| 962 | | case 0x01: size = arcompact_handle18_01_dasm(output, pc, op, oprom); break; // LDB_S (SP) |
| 963 | | case 0x02: size = arcompact_handle18_02_dasm(output, pc, op, oprom); break; // ST_S (SP) |
| 964 | | case 0x03: size = arcompact_handle18_03_dasm(output, pc, op, oprom); break; // STB_S (SP) |
| 965 | | case 0x04: size = arcompact_handle18_04_dasm(output, pc, op, oprom); break; // ADD_S (SP) |
| 966 | | case 0x05: size = arcompact_handle18_05_dasm(output, pc, op, oprom); break; // subtable 18_05 |
| 967 | | case 0x06: size = arcompact_handle18_06_dasm(output, pc, op, oprom); break; // subtable 18_06 |
| 968 | | case 0x07: size = arcompact_handle18_07_dasm(output, pc, op, oprom); break; // subtable 18_07 |
| 1288 | case 0x00: size = arcompact_handle18_00_dasm(DASM_PARAMS); break; // LD_S (SP) |
| 1289 | case 0x01: size = arcompact_handle18_01_dasm(DASM_PARAMS); break; // LDB_S (SP) |
| 1290 | case 0x02: size = arcompact_handle18_02_dasm(DASM_PARAMS); break; // ST_S (SP) |
| 1291 | case 0x03: size = arcompact_handle18_03_dasm(DASM_PARAMS); break; // STB_S (SP) |
| 1292 | case 0x04: size = arcompact_handle18_04_dasm(DASM_PARAMS); break; // ADD_S (SP) |
| 1293 | case 0x05: size = arcompact_handle18_05_dasm(DASM_PARAMS); break; // subtable 18_05 |
| 1294 | case 0x06: size = arcompact_handle18_06_dasm(DASM_PARAMS); break; // subtable 18_06 |
| 1295 | case 0x07: size = arcompact_handle18_07_dasm(DASM_PARAMS); break; // subtable 18_07 |
| 969 | 1296 | } |
| 970 | 1297 | |
| 971 | 1298 | return size; |
| r242259 | r242260 | |
| 1015 | 1342 | |
| 1016 | 1343 | switch (subinstr2) |
| 1017 | 1344 | { |
| 1018 | | case 0x00: size = arcompact_handle18_05_00_dasm(output, pc, op, oprom); break; // ADD_S (SP) |
| 1019 | | case 0x01: size = arcompact_handle18_05_01_dasm(output, pc, op, oprom); break; // SUB_S (SP) |
| 1020 | | case 0x02: size = arcompact_handle18_05_02_dasm(output, pc, op, oprom); break; // <illegal 0x18_05_02> |
| 1021 | | case 0x03: size = arcompact_handle18_05_03_dasm(output, pc, op, oprom); break; // <illegal 0x18_05_03> |
| 1022 | | case 0x04: size = arcompact_handle18_05_04_dasm(output, pc, op, oprom); break; // <illegal 0x18_05_04> |
| 1023 | | case 0x05: size = arcompact_handle18_05_05_dasm(output, pc, op, oprom); break; // <illegal 0x18_05_05> |
| 1024 | | case 0x06: size = arcompact_handle18_05_06_dasm(output, pc, op, oprom); break; // <illegal 0x18_05_06> |
| 1025 | | case 0x07: size = arcompact_handle18_05_07_dasm(output, pc, op, oprom); break; // <illegal 0x18_05_07> |
| 1345 | case 0x00: size = arcompact_handle18_05_00_dasm(DASM_PARAMS); break; // ADD_S (SP) |
| 1346 | case 0x01: size = arcompact_handle18_05_01_dasm(DASM_PARAMS); break; // SUB_S (SP) |
| 1347 | case 0x02: size = arcompact_handle18_05_02_dasm(DASM_PARAMS); break; // <illegal 0x18_05_02> |
| 1348 | case 0x03: size = arcompact_handle18_05_03_dasm(DASM_PARAMS); break; // <illegal 0x18_05_03> |
| 1349 | case 0x04: size = arcompact_handle18_05_04_dasm(DASM_PARAMS); break; // <illegal 0x18_05_04> |
| 1350 | case 0x05: size = arcompact_handle18_05_05_dasm(DASM_PARAMS); break; // <illegal 0x18_05_05> |
| 1351 | case 0x06: size = arcompact_handle18_05_06_dasm(DASM_PARAMS); break; // <illegal 0x18_05_06> |
| 1352 | case 0x07: size = arcompact_handle18_05_07_dasm(DASM_PARAMS); break; // <illegal 0x18_05_07> |
| 1026 | 1353 | } |
| 1027 | 1354 | |
| 1028 | 1355 | return size; |
| r242259 | r242260 | |
| 1064 | 1391 | |
| 1065 | 1392 | switch (subinstr2) |
| 1066 | 1393 | { |
| 1067 | | case 0x00: size = arcompact_handle18_06_00_dasm(output, pc, op, oprom); break; // <illegal 0x18_06_00> |
| 1068 | | case 0x01: size = arcompact_handle18_06_01_dasm(output, pc, op, oprom); break; // POP_S b |
| 1069 | | case 0x02: size = arcompact_handle18_06_02_dasm(output, pc, op, oprom); break; // <illegal 0x18_06_02> |
| 1070 | | case 0x03: size = arcompact_handle18_06_03_dasm(output, pc, op, oprom); break; // <illegal 0x18_06_03> |
| 1071 | | case 0x04: size = arcompact_handle18_06_04_dasm(output, pc, op, oprom); break; // <illegal 0x18_06_04> |
| 1072 | | case 0x05: size = arcompact_handle18_06_05_dasm(output, pc, op, oprom); break; // <illegal 0x18_06_05> |
| 1073 | | case 0x06: size = arcompact_handle18_06_06_dasm(output, pc, op, oprom); break; // <illegal 0x18_06_06> |
| 1074 | | case 0x07: size = arcompact_handle18_06_07_dasm(output, pc, op, oprom); break; // <illegal 0x18_06_07> |
| 1075 | | case 0x08: size = arcompact_handle18_06_08_dasm(output, pc, op, oprom); break; // <illegal 0x18_06_08> |
| 1076 | | case 0x09: size = arcompact_handle18_06_09_dasm(output, pc, op, oprom); break; // <illegal 0x18_06_09> |
| 1077 | | case 0x0a: size = arcompact_handle18_06_0a_dasm(output, pc, op, oprom); break; // <illegal 0x18_06_0a> |
| 1078 | | case 0x0b: size = arcompact_handle18_06_0b_dasm(output, pc, op, oprom); break; // <illegal 0x18_06_0b> |
| 1079 | | case 0x0c: size = arcompact_handle18_06_0c_dasm(output, pc, op, oprom); break; // <illegal 0x18_06_0c> |
| 1080 | | case 0x0d: size = arcompact_handle18_06_0d_dasm(output, pc, op, oprom); break; // <illegal 0x18_06_0d> |
| 1081 | | case 0x0e: size = arcompact_handle18_06_0e_dasm(output, pc, op, oprom); break; // <illegal 0x18_06_0e> |
| 1082 | | case 0x0f: size = arcompact_handle18_06_0f_dasm(output, pc, op, oprom); break; // <illegal 0x18_06_0f> |
| 1083 | | case 0x10: size = arcompact_handle18_06_10_dasm(output, pc, op, oprom); break; // <illegal 0x18_06_10> |
| 1084 | | case 0x11: size = arcompact_handle18_06_11_dasm(output, pc, op, oprom); break; // POP_S blink |
| 1085 | | case 0x12: size = arcompact_handle18_06_12_dasm(output, pc, op, oprom); break; // <illegal 0x18_06_12> |
| 1086 | | case 0x13: size = arcompact_handle18_06_13_dasm(output, pc, op, oprom); break; // <illegal 0x18_06_13> |
| 1087 | | case 0x14: size = arcompact_handle18_06_14_dasm(output, pc, op, oprom); break; // <illegal 0x18_06_14> |
| 1088 | | case 0x15: size = arcompact_handle18_06_15_dasm(output, pc, op, oprom); break; // <illegal 0x18_06_15> |
| 1089 | | case 0x16: size = arcompact_handle18_06_16_dasm(output, pc, op, oprom); break; // <illegal 0x18_06_16> |
| 1090 | | case 0x17: size = arcompact_handle18_06_17_dasm(output, pc, op, oprom); break; // <illegal 0x18_06_17> |
| 1091 | | case 0x18: size = arcompact_handle18_06_18_dasm(output, pc, op, oprom); break; // <illegal 0x18_06_18> |
| 1092 | | case 0x19: size = arcompact_handle18_06_19_dasm(output, pc, op, oprom); break; // <illegal 0x18_06_19> |
| 1093 | | case 0x1a: size = arcompact_handle18_06_1a_dasm(output, pc, op, oprom); break; // <illegal 0x18_06_1a> |
| 1094 | | case 0x1b: size = arcompact_handle18_06_1b_dasm(output, pc, op, oprom); break; // <illegal 0x18_06_1b> |
| 1095 | | case 0x1c: size = arcompact_handle18_06_1c_dasm(output, pc, op, oprom); break; // <illegal 0x18_06_1c> |
| 1096 | | case 0x1d: size = arcompact_handle18_06_1d_dasm(output, pc, op, oprom); break; // <illegal 0x18_06_1d> |
| 1097 | | case 0x1e: size = arcompact_handle18_06_1e_dasm(output, pc, op, oprom); break; // <illegal 0x18_06_1e> |
| 1098 | | case 0x1f: size = arcompact_handle18_06_1f_dasm(output, pc, op, oprom); break; // <illegal 0x18_06_1f> |
| 1394 | case 0x00: size = arcompact_handle18_06_00_dasm(DASM_PARAMS); break; // <illegal 0x18_06_00> |
| 1395 | case 0x01: size = arcompact_handle18_06_01_dasm(DASM_PARAMS); break; // POP_S b |
| 1396 | case 0x02: size = arcompact_handle18_06_02_dasm(DASM_PARAMS); break; // <illegal 0x18_06_02> |
| 1397 | case 0x03: size = arcompact_handle18_06_03_dasm(DASM_PARAMS); break; // <illegal 0x18_06_03> |
| 1398 | case 0x04: size = arcompact_handle18_06_04_dasm(DASM_PARAMS); break; // <illegal 0x18_06_04> |
| 1399 | case 0x05: size = arcompact_handle18_06_05_dasm(DASM_PARAMS); break; // <illegal 0x18_06_05> |
| 1400 | case 0x06: size = arcompact_handle18_06_06_dasm(DASM_PARAMS); break; // <illegal 0x18_06_06> |
| 1401 | case 0x07: size = arcompact_handle18_06_07_dasm(DASM_PARAMS); break; // <illegal 0x18_06_07> |
| 1402 | case 0x08: size = arcompact_handle18_06_08_dasm(DASM_PARAMS); break; // <illegal 0x18_06_08> |
| 1403 | case 0x09: size = arcompact_handle18_06_09_dasm(DASM_PARAMS); break; // <illegal 0x18_06_09> |
| 1404 | case 0x0a: size = arcompact_handle18_06_0a_dasm(DASM_PARAMS); break; // <illegal 0x18_06_0a> |
| 1405 | case 0x0b: size = arcompact_handle18_06_0b_dasm(DASM_PARAMS); break; // <illegal 0x18_06_0b> |
| 1406 | case 0x0c: size = arcompact_handle18_06_0c_dasm(DASM_PARAMS); break; // <illegal 0x18_06_0c> |
| 1407 | case 0x0d: size = arcompact_handle18_06_0d_dasm(DASM_PARAMS); break; // <illegal 0x18_06_0d> |
| 1408 | case 0x0e: size = arcompact_handle18_06_0e_dasm(DASM_PARAMS); break; // <illegal 0x18_06_0e> |
| 1409 | case 0x0f: size = arcompact_handle18_06_0f_dasm(DASM_PARAMS); break; // <illegal 0x18_06_0f> |
| 1410 | case 0x10: size = arcompact_handle18_06_10_dasm(DASM_PARAMS); break; // <illegal 0x18_06_10> |
| 1411 | case 0x11: size = arcompact_handle18_06_11_dasm(DASM_PARAMS); break; // POP_S blink |
| 1412 | case 0x12: size = arcompact_handle18_06_12_dasm(DASM_PARAMS); break; // <illegal 0x18_06_12> |
| 1413 | case 0x13: size = arcompact_handle18_06_13_dasm(DASM_PARAMS); break; // <illegal 0x18_06_13> |
| 1414 | case 0x14: size = arcompact_handle18_06_14_dasm(DASM_PARAMS); break; // <illegal 0x18_06_14> |
| 1415 | case 0x15: size = arcompact_handle18_06_15_dasm(DASM_PARAMS); break; // <illegal 0x18_06_15> |
| 1416 | case 0x16: size = arcompact_handle18_06_16_dasm(DASM_PARAMS); break; // <illegal 0x18_06_16> |
| 1417 | case 0x17: size = arcompact_handle18_06_17_dasm(DASM_PARAMS); break; // <illegal 0x18_06_17> |
| 1418 | case 0x18: size = arcompact_handle18_06_18_dasm(DASM_PARAMS); break; // <illegal 0x18_06_18> |
| 1419 | case 0x19: size = arcompact_handle18_06_19_dasm(DASM_PARAMS); break; // <illegal 0x18_06_19> |
| 1420 | case 0x1a: size = arcompact_handle18_06_1a_dasm(DASM_PARAMS); break; // <illegal 0x18_06_1a> |
| 1421 | case 0x1b: size = arcompact_handle18_06_1b_dasm(DASM_PARAMS); break; // <illegal 0x18_06_1b> |
| 1422 | case 0x1c: size = arcompact_handle18_06_1c_dasm(DASM_PARAMS); break; // <illegal 0x18_06_1c> |
| 1423 | case 0x1d: size = arcompact_handle18_06_1d_dasm(DASM_PARAMS); break; // <illegal 0x18_06_1d> |
| 1424 | case 0x1e: size = arcompact_handle18_06_1e_dasm(DASM_PARAMS); break; // <illegal 0x18_06_1e> |
| 1425 | case 0x1f: size = arcompact_handle18_06_1f_dasm(DASM_PARAMS); break; // <illegal 0x18_06_1f> |
| 1099 | 1426 | } |
| 1100 | 1427 | |
| 1101 | 1428 | return size; |
| r242259 | r242260 | |
| 1170 | 1497 | |
| 1171 | 1498 | switch (subinstr2) |
| 1172 | 1499 | { |
| 1173 | | case 0x00: size = arcompact_handle18_07_00_dasm(output, pc, op, oprom); break; // <illegal 0x18_07_00> |
| 1174 | | case 0x01: size = arcompact_handle18_07_01_dasm(output, pc, op, oprom); break; // PUSH_S b |
| 1175 | | case 0x02: size = arcompact_handle18_07_02_dasm(output, pc, op, oprom); break; // <illegal 0x18_07_02> |
| 1176 | | case 0x03: size = arcompact_handle18_07_03_dasm(output, pc, op, oprom); break; // <illegal 0x18_07_03> |
| 1177 | | case 0x04: size = arcompact_handle18_07_04_dasm(output, pc, op, oprom); break; // <illegal 0x18_07_04> |
| 1178 | | case 0x05: size = arcompact_handle18_07_05_dasm(output, pc, op, oprom); break; // <illegal 0x18_07_05> |
| 1179 | | case 0x06: size = arcompact_handle18_07_06_dasm(output, pc, op, oprom); break; // <illegal 0x18_07_06> |
| 1180 | | case 0x07: size = arcompact_handle18_07_07_dasm(output, pc, op, oprom); break; // <illegal 0x18_07_07> |
| 1181 | | case 0x08: size = arcompact_handle18_07_08_dasm(output, pc, op, oprom); break; // <illegal 0x18_07_08> |
| 1182 | | case 0x09: size = arcompact_handle18_07_09_dasm(output, pc, op, oprom); break; // <illegal 0x18_07_09> |
| 1183 | | case 0x0a: size = arcompact_handle18_07_0a_dasm(output, pc, op, oprom); break; // <illegal 0x18_07_0a> |
| 1184 | | case 0x0b: size = arcompact_handle18_07_0b_dasm(output, pc, op, oprom); break; // <illegal 0x18_07_0b> |
| 1185 | | case 0x0c: size = arcompact_handle18_07_0c_dasm(output, pc, op, oprom); break; // <illegal 0x18_07_0c> |
| 1186 | | case 0x0d: size = arcompact_handle18_07_0d_dasm(output, pc, op, oprom); break; // <illegal 0x18_07_0d> |
| 1187 | | case 0x0e: size = arcompact_handle18_07_0e_dasm(output, pc, op, oprom); break; // <illegal 0x18_07_0e> |
| 1188 | | case 0x0f: size = arcompact_handle18_07_0f_dasm(output, pc, op, oprom); break; // <illegal 0x18_07_0f> |
| 1189 | | case 0x10: size = arcompact_handle18_07_10_dasm(output, pc, op, oprom); break; // <illegal 0x18_07_10> |
| 1190 | | case 0x11: size = arcompact_handle18_07_11_dasm(output, pc, op, oprom); break; // PUSH_S blink |
| 1191 | | case 0x12: size = arcompact_handle18_07_12_dasm(output, pc, op, oprom); break; // <illegal 0x18_07_12> |
| 1192 | | case 0x13: size = arcompact_handle18_07_13_dasm(output, pc, op, oprom); break; // <illegal 0x18_07_13> |
| 1193 | | case 0x14: size = arcompact_handle18_07_14_dasm(output, pc, op, oprom); break; // <illegal 0x18_07_14> |
| 1194 | | case 0x15: size = arcompact_handle18_07_15_dasm(output, pc, op, oprom); break; // <illegal 0x18_07_15> |
| 1195 | | case 0x16: size = arcompact_handle18_07_16_dasm(output, pc, op, oprom); break; // <illegal 0x18_07_16> |
| 1196 | | case 0x17: size = arcompact_handle18_07_17_dasm(output, pc, op, oprom); break; // <illegal 0x18_07_17> |
| 1197 | | case 0x18: size = arcompact_handle18_07_18_dasm(output, pc, op, oprom); break; // <illegal 0x18_07_18> |
| 1198 | | case 0x19: size = arcompact_handle18_07_19_dasm(output, pc, op, oprom); break; // <illegal 0x18_07_19> |
| 1199 | | case 0x1a: size = arcompact_handle18_07_1a_dasm(output, pc, op, oprom); break; // <illegal 0x18_07_1a> |
| 1200 | | case 0x1b: size = arcompact_handle18_07_1b_dasm(output, pc, op, oprom); break; // <illegal 0x18_07_1b> |
| 1201 | | case 0x1c: size = arcompact_handle18_07_1c_dasm(output, pc, op, oprom); break; // <illegal 0x18_07_1c> |
| 1202 | | case 0x1d: size = arcompact_handle18_07_1d_dasm(output, pc, op, oprom); break; // <illegal 0x18_07_1d> |
| 1203 | | case 0x1e: size = arcompact_handle18_07_1e_dasm(output, pc, op, oprom); break; // <illegal 0x18_07_1e> |
| 1204 | | case 0x1f: size = arcompact_handle18_07_1f_dasm(output, pc, op, oprom); break; // <illegal 0x18_07_1f> |
| 1500 | case 0x00: size = arcompact_handle18_07_00_dasm(DASM_PARAMS); break; // <illegal 0x18_07_00> |
| 1501 | case 0x01: size = arcompact_handle18_07_01_dasm(DASM_PARAMS); break; // PUSH_S b |
| 1502 | case 0x02: size = arcompact_handle18_07_02_dasm(DASM_PARAMS); break; // <illegal 0x18_07_02> |
| 1503 | case 0x03: size = arcompact_handle18_07_03_dasm(DASM_PARAMS); break; // <illegal 0x18_07_03> |
| 1504 | case 0x04: size = arcompact_handle18_07_04_dasm(DASM_PARAMS); break; // <illegal 0x18_07_04> |
| 1505 | case 0x05: size = arcompact_handle18_07_05_dasm(DASM_PARAMS); break; // <illegal 0x18_07_05> |
| 1506 | case 0x06: size = arcompact_handle18_07_06_dasm(DASM_PARAMS); break; // <illegal 0x18_07_06> |
| 1507 | case 0x07: size = arcompact_handle18_07_07_dasm(DASM_PARAMS); break; // <illegal 0x18_07_07> |
| 1508 | case 0x08: size = arcompact_handle18_07_08_dasm(DASM_PARAMS); break; // <illegal 0x18_07_08> |
| 1509 | case 0x09: size = arcompact_handle18_07_09_dasm(DASM_PARAMS); break; // <illegal 0x18_07_09> |
| 1510 | case 0x0a: size = arcompact_handle18_07_0a_dasm(DASM_PARAMS); break; // <illegal 0x18_07_0a> |
| 1511 | case 0x0b: size = arcompact_handle18_07_0b_dasm(DASM_PARAMS); break; // <illegal 0x18_07_0b> |
| 1512 | case 0x0c: size = arcompact_handle18_07_0c_dasm(DASM_PARAMS); break; // <illegal 0x18_07_0c> |
| 1513 | case 0x0d: size = arcompact_handle18_07_0d_dasm(DASM_PARAMS); break; // <illegal 0x18_07_0d> |
| 1514 | case 0x0e: size = arcompact_handle18_07_0e_dasm(DASM_PARAMS); break; // <illegal 0x18_07_0e> |
| 1515 | case 0x0f: size = arcompact_handle18_07_0f_dasm(DASM_PARAMS); break; // <illegal 0x18_07_0f> |
| 1516 | case 0x10: size = arcompact_handle18_07_10_dasm(DASM_PARAMS); break; // <illegal 0x18_07_10> |
| 1517 | case 0x11: size = arcompact_handle18_07_11_dasm(DASM_PARAMS); break; // PUSH_S blink |
| 1518 | case 0x12: size = arcompact_handle18_07_12_dasm(DASM_PARAMS); break; // <illegal 0x18_07_12> |
| 1519 | case 0x13: size = arcompact_handle18_07_13_dasm(DASM_PARAMS); break; // <illegal 0x18_07_13> |
| 1520 | case 0x14: size = arcompact_handle18_07_14_dasm(DASM_PARAMS); break; // <illegal 0x18_07_14> |
| 1521 | case 0x15: size = arcompact_handle18_07_15_dasm(DASM_PARAMS); break; // <illegal 0x18_07_15> |
| 1522 | case 0x16: size = arcompact_handle18_07_16_dasm(DASM_PARAMS); break; // <illegal 0x18_07_16> |
| 1523 | case 0x17: size = arcompact_handle18_07_17_dasm(DASM_PARAMS); break; // <illegal 0x18_07_17> |
| 1524 | case 0x18: size = arcompact_handle18_07_18_dasm(DASM_PARAMS); break; // <illegal 0x18_07_18> |
| 1525 | case 0x19: size = arcompact_handle18_07_19_dasm(DASM_PARAMS); break; // <illegal 0x18_07_19> |
| 1526 | case 0x1a: size = arcompact_handle18_07_1a_dasm(DASM_PARAMS); break; // <illegal 0x18_07_1a> |
| 1527 | case 0x1b: size = arcompact_handle18_07_1b_dasm(DASM_PARAMS); break; // <illegal 0x18_07_1b> |
| 1528 | case 0x1c: size = arcompact_handle18_07_1c_dasm(DASM_PARAMS); break; // <illegal 0x18_07_1c> |
| 1529 | case 0x1d: size = arcompact_handle18_07_1d_dasm(DASM_PARAMS); break; // <illegal 0x18_07_1d> |
| 1530 | case 0x1e: size = arcompact_handle18_07_1e_dasm(DASM_PARAMS); break; // <illegal 0x18_07_1e> |
| 1531 | case 0x1f: size = arcompact_handle18_07_1f_dasm(DASM_PARAMS); break; // <illegal 0x18_07_1f> |
| 1205 | 1532 | } |
| 1206 | 1533 | |
| 1207 | 1534 | return size; |
| r242259 | r242260 | |
| 1328 | 1655 | |
| 1329 | 1656 | switch (instruction) // 32-bit instructions (with optional extra dword for immediate data) |
| 1330 | 1657 | { |
| 1331 | | case 0x00: size = arcompact_handle00_dasm(output, pc, op, oprom); break; // Bcc |
| 1332 | | case 0x01: size = arcompact_handle01_dasm(output, pc, op, oprom); break; // BLcc/BRcc |
| 1333 | | case 0x02: size = arcompact_handle02_dasm(output, pc, op, oprom); break; // LD r+o |
| 1334 | | case 0x03: size = arcompact_handle03_dasm(output, pc, op, oprom); break; // ST r+o |
| 1335 | | case 0x04: size = arcompact_handle04_dasm(output, pc, op, oprom); break; // op a,b,c (basecase) |
| 1336 | | case 0x05: size = arcompact_handle05_dasm(output, pc, op, oprom); break; // op a,b,c (05 ARC ext) |
| 1337 | | case 0x06: size = arcompact_handle06_dasm(output, pc, op, oprom); break; // op a,b,c (06 ARC ext) |
| 1338 | | case 0x07: size = arcompact_handle07_dasm(output, pc, op, oprom); break; // op a,b,c (07 User ext) |
| 1339 | | case 0x08: size = arcompact_handle08_dasm(output, pc, op, oprom); break; // op a,b,c (08 User ext) |
| 1340 | | case 0x09: size = arcompact_handle09_dasm(output, pc, op, oprom); break; // op a,b,c (09 Market ext) |
| 1341 | | case 0x0a: size = arcompact_handle0a_dasm(output, pc, op, oprom); break; // op a,b,c (0a Market ext) |
| 1342 | | case 0x0b: size = arcompact_handle0b_dasm(output, pc, op, oprom); break; // op a,b,c (0b Market ext) |
| 1658 | case 0x00: size = arcompact_handle00_dasm(DASM_PARAMS); break; // Bcc |
| 1659 | case 0x01: size = arcompact_handle01_dasm(DASM_PARAMS); break; // BLcc/BRcc |
| 1660 | case 0x02: size = arcompact_handle02_dasm(DASM_PARAMS); break; // LD r+o |
| 1661 | case 0x03: size = arcompact_handle03_dasm(DASM_PARAMS); break; // ST r+o |
| 1662 | case 0x04: size = arcompact_handle04_dasm(DASM_PARAMS); break; // op a,b,c (basecase) |
| 1663 | case 0x05: size = arcompact_handle05_dasm(DASM_PARAMS); break; // op a,b,c (05 ARC ext) |
| 1664 | case 0x06: size = arcompact_handle06_dasm(DASM_PARAMS); break; // op a,b,c (06 ARC ext) |
| 1665 | case 0x07: size = arcompact_handle07_dasm(DASM_PARAMS); break; // op a,b,c (07 User ext) |
| 1666 | case 0x08: size = arcompact_handle08_dasm(DASM_PARAMS); break; // op a,b,c (08 User ext) |
| 1667 | case 0x09: size = arcompact_handle09_dasm(DASM_PARAMS); break; // op a,b,c (09 Market ext) |
| 1668 | case 0x0a: size = arcompact_handle0a_dasm(DASM_PARAMS); break; // op a,b,c (0a Market ext) |
| 1669 | case 0x0b: size = arcompact_handle0b_dasm(DASM_PARAMS); break; // op a,b,c (0b Market ext) |
| 1343 | 1670 | } |
| 1344 | 1671 | } |
| 1345 | 1672 | else |
| r242259 | r242260 | |
| 1350 | 1677 | |
| 1351 | 1678 | switch (instruction) // 16-bit instructions |
| 1352 | 1679 | { |
| 1353 | | case 0x0c: size = arcompact_handle0c_dasm(output, pc, op, oprom); break; // Load/Add reg-reg |
| 1354 | | case 0x0d: size = arcompact_handle0d_dasm(output, pc, op, oprom); break; // Add/Sub/Shft imm |
| 1355 | | case 0x0e: size = arcompact_handle0e_dasm(output, pc, op, oprom); break; // Mov/Cmp/Add |
| 1356 | | case 0x0f: size = arcompact_handle0f_dasm(output, pc, op, oprom); break; // op_S b,b,c (single 16-bit ops) |
| 1357 | | case 0x10: size = arcompact_handle10_dasm(output, pc, op, oprom); break; // LD_S |
| 1358 | | case 0x11: size = arcompact_handle11_dasm(output, pc, op, oprom); break; // LDB_S |
| 1359 | | case 0x12: size = arcompact_handle12_dasm(output, pc, op, oprom); break; // LDW_S |
| 1360 | | case 0x13: size = arcompact_handle13_dasm(output, pc, op, oprom); break; // LSW_S.X |
| 1361 | | case 0x14: size = arcompact_handle14_dasm(output, pc, op, oprom); break; // ST_S |
| 1362 | | case 0x15: size = arcompact_handle15_dasm(output, pc, op, oprom); break; // STB_S |
| 1363 | | case 0x16: size = arcompact_handle16_dasm(output, pc, op, oprom); break; // STW_S |
| 1364 | | case 0x17: size = arcompact_handle17_dasm(output, pc, op, oprom); break; // Shift/Sub/Bit |
| 1365 | | case 0x18: size = arcompact_handle18_dasm(output, pc, op, oprom); break; // Stack Instr |
| 1366 | | case 0x19: size = arcompact_handle19_dasm(output, pc, op, oprom); break; // GP Instr |
| 1367 | | case 0x1a: size = arcompact_handle1a_dasm(output, pc, op, oprom); break; // PCL Instr |
| 1368 | | case 0x1b: size = arcompact_handle1b_dasm(output, pc, op, oprom); break; // MOV_S |
| 1369 | | case 0x1c: size = arcompact_handle1c_dasm(output, pc, op, oprom); break; // ADD_S/CMP_S |
| 1370 | | case 0x1d: size = arcompact_handle1d_dasm(output, pc, op, oprom); break; // BRcc_S |
| 1371 | | case 0x1e: size = arcompact_handle1e_dasm(output, pc, op, oprom); break; // Bcc_S |
| 1372 | | case 0x1f: size = arcompact_handle1f_dasm(output, pc, op, oprom); break; // BL_S |
| 1680 | case 0x0c: size = arcompact_handle0c_dasm(DASM_PARAMS); break; // Load/Add reg-reg |
| 1681 | case 0x0d: size = arcompact_handle0d_dasm(DASM_PARAMS); break; // Add/Sub/Shft imm |
| 1682 | case 0x0e: size = arcompact_handle0e_dasm(DASM_PARAMS); break; // Mov/Cmp/Add |
| 1683 | case 0x0f: size = arcompact_handle0f_dasm(DASM_PARAMS); break; // op_S b,b,c (single 16-bit ops) |
| 1684 | case 0x10: size = arcompact_handle10_dasm(DASM_PARAMS); break; // LD_S |
| 1685 | case 0x11: size = arcompact_handle11_dasm(DASM_PARAMS); break; // LDB_S |
| 1686 | case 0x12: size = arcompact_handle12_dasm(DASM_PARAMS); break; // LDW_S |
| 1687 | case 0x13: size = arcompact_handle13_dasm(DASM_PARAMS); break; // LSW_S.X |
| 1688 | case 0x14: size = arcompact_handle14_dasm(DASM_PARAMS); break; // ST_S |
| 1689 | case 0x15: size = arcompact_handle15_dasm(DASM_PARAMS); break; // STB_S |
| 1690 | case 0x16: size = arcompact_handle16_dasm(DASM_PARAMS); break; // STW_S |
| 1691 | case 0x17: size = arcompact_handle17_dasm(DASM_PARAMS); break; // Shift/Sub/Bit |
| 1692 | case 0x18: size = arcompact_handle18_dasm(DASM_PARAMS); break; // Stack Instr |
| 1693 | case 0x19: size = arcompact_handle19_dasm(DASM_PARAMS); break; // GP Instr |
| 1694 | case 0x1a: size = arcompact_handle1a_dasm(DASM_PARAMS); break; // PCL Instr |
| 1695 | case 0x1b: size = arcompact_handle1b_dasm(DASM_PARAMS); break; // MOV_S |
| 1696 | case 0x1c: size = arcompact_handle1c_dasm(DASM_PARAMS); break; // ADD_S/CMP_S |
| 1697 | case 0x1d: size = arcompact_handle1d_dasm(DASM_PARAMS); break; // BRcc_S |
| 1698 | case 0x1e: size = arcompact_handle1e_dasm(DASM_PARAMS); break; // Bcc_S |
| 1699 | case 0x1f: size = arcompact_handle1f_dasm(DASM_PARAMS); break; // BL_S |
| 1373 | 1700 | } |
| 1374 | 1701 | } |
| 1375 | 1702 | |