Previous 199869 Revisions Next

r33748 Monday 8th December, 2014 at 21:20:09 UTC by David Haywood
arc (nw)
[src/emu/cpu/arcompact]arcompact.h arcompactdasm.c

trunk/src/emu/cpu/arcompact/arcompact.h
r242259r242260
3636
3737   // device_disasm_interface overrides
3838   virtual UINT32 disasm_min_opcode_bytes() const { return 2; }
39   virtual UINT32 disasm_max_opcode_bytes() const { return 4; }
39   virtual UINT32 disasm_max_opcode_bytes() const { return 8; }
4040   virtual offs_t disasm_disassemble(char *buffer, offs_t pc, const UINT8 *oprom, const UINT8 *opram, UINT32 options);
4141
4242private:
trunk/src/emu/cpu/arcompact/arcompactdasm.c
r242259r242260
2626
2727#define DASM_OPS_16 char *output, offs_t pc, UINT16 op, const UINT8* oprom
2828#define DASM_OPS_32 char *output, offs_t pc, UINT32 op, const UINT8* oprom
29#define DASM_PARAMS output, pc, op, oprom
2930
31#define LIMM_REG 62
32
3033int arcompact_handle04_00_dasm(DASM_OPS_32);
3134int arcompact_handle04_01_dasm(DASM_OPS_32);
3235int arcompact_handle04_02_dasm(DASM_OPS_32);
r242259r242260
157160int arcompact_handle04_2f_3e_dasm(DASM_OPS_32);
158161int arcompact_handle04_2f_3f_dasm(DASM_OPS_32);
159162
163int arcompact_handle04_2f_3f_00_dasm(DASM_OPS_32);
164int arcompact_handle04_2f_3f_01_dasm(DASM_OPS_32);
165int arcompact_handle04_2f_3f_02_dasm(DASM_OPS_32);
166int arcompact_handle04_2f_3f_03_dasm(DASM_OPS_32);
167int arcompact_handle04_2f_3f_04_dasm(DASM_OPS_32);
168int arcompact_handle04_2f_3f_05_dasm(DASM_OPS_32);
169int arcompact_handle04_2f_3f_06_dasm(DASM_OPS_32);
170int arcompact_handle04_2f_3f_07_dasm(DASM_OPS_32);
171int arcompact_handle04_2f_3f_08_dasm(DASM_OPS_32);
172int arcompact_handle04_2f_3f_09_dasm(DASM_OPS_32);
173int arcompact_handle04_2f_3f_0a_dasm(DASM_OPS_32);
174int arcompact_handle04_2f_3f_0b_dasm(DASM_OPS_32);
175int arcompact_handle04_2f_3f_0c_dasm(DASM_OPS_32);
176int arcompact_handle04_2f_3f_0d_dasm(DASM_OPS_32);
177int arcompact_handle04_2f_3f_0e_dasm(DASM_OPS_32);
178int arcompact_handle04_2f_3f_0f_dasm(DASM_OPS_32);
179int arcompact_handle04_2f_3f_10_dasm(DASM_OPS_32);
180int arcompact_handle04_2f_3f_11_dasm(DASM_OPS_32);
181int arcompact_handle04_2f_3f_12_dasm(DASM_OPS_32);
182int arcompact_handle04_2f_3f_13_dasm(DASM_OPS_32);
183int arcompact_handle04_2f_3f_14_dasm(DASM_OPS_32);
184int arcompact_handle04_2f_3f_15_dasm(DASM_OPS_32);
185int arcompact_handle04_2f_3f_16_dasm(DASM_OPS_32);
186int arcompact_handle04_2f_3f_17_dasm(DASM_OPS_32);
187int arcompact_handle04_2f_3f_18_dasm(DASM_OPS_32);
188int arcompact_handle04_2f_3f_19_dasm(DASM_OPS_32);
189int arcompact_handle04_2f_3f_1a_dasm(DASM_OPS_32);
190int arcompact_handle04_2f_3f_1b_dasm(DASM_OPS_32);
191int arcompact_handle04_2f_3f_1c_dasm(DASM_OPS_32);
192int arcompact_handle04_2f_3f_1d_dasm(DASM_OPS_32);
193int arcompact_handle04_2f_3f_1e_dasm(DASM_OPS_32);
194int arcompact_handle04_2f_3f_1f_dasm(DASM_OPS_32);
195int arcompact_handle04_2f_3f_20_dasm(DASM_OPS_32);
196int arcompact_handle04_2f_3f_21_dasm(DASM_OPS_32);
197int arcompact_handle04_2f_3f_22_dasm(DASM_OPS_32);
198int arcompact_handle04_2f_3f_23_dasm(DASM_OPS_32);
199int arcompact_handle04_2f_3f_24_dasm(DASM_OPS_32);
200int arcompact_handle04_2f_3f_25_dasm(DASM_OPS_32);
201int arcompact_handle04_2f_3f_26_dasm(DASM_OPS_32);
202int arcompact_handle04_2f_3f_27_dasm(DASM_OPS_32);
203int arcompact_handle04_2f_3f_28_dasm(DASM_OPS_32);
204int arcompact_handle04_2f_3f_29_dasm(DASM_OPS_32);
205int arcompact_handle04_2f_3f_2a_dasm(DASM_OPS_32);
206int arcompact_handle04_2f_3f_2b_dasm(DASM_OPS_32);
207int arcompact_handle04_2f_3f_2c_dasm(DASM_OPS_32);
208int arcompact_handle04_2f_3f_2d_dasm(DASM_OPS_32);
209int arcompact_handle04_2f_3f_2e_dasm(DASM_OPS_32);
210int arcompact_handle04_2f_3f_2f_dasm(DASM_OPS_32);
211int arcompact_handle04_2f_3f_30_dasm(DASM_OPS_32);
212int arcompact_handle04_2f_3f_31_dasm(DASM_OPS_32);
213int arcompact_handle04_2f_3f_32_dasm(DASM_OPS_32);
214int arcompact_handle04_2f_3f_33_dasm(DASM_OPS_32);
215int arcompact_handle04_2f_3f_34_dasm(DASM_OPS_32);
216int arcompact_handle04_2f_3f_35_dasm(DASM_OPS_32);
217int arcompact_handle04_2f_3f_36_dasm(DASM_OPS_32);
218int arcompact_handle04_2f_3f_37_dasm(DASM_OPS_32);
219int arcompact_handle04_2f_3f_38_dasm(DASM_OPS_32);
220int arcompact_handle04_2f_3f_39_dasm(DASM_OPS_32);
221int arcompact_handle04_2f_3f_3a_dasm(DASM_OPS_32);
222int arcompact_handle04_2f_3f_3b_dasm(DASM_OPS_32);
223int arcompact_handle04_2f_3f_3c_dasm(DASM_OPS_32);
224int arcompact_handle04_2f_3f_3d_dasm(DASM_OPS_32);
225int arcompact_handle04_2f_3f_3e_dasm(DASM_OPS_32);
226int arcompact_handle04_2f_3f_3f_dasm(DASM_OPS_32);
227
228int arcompact_handle0e_00_dasm(DASM_OPS_16);
229int arcompact_handle0e_01_dasm(DASM_OPS_16);
230int arcompact_handle0e_02_dasm(DASM_OPS_16);
231int arcompact_handle0e_03_dasm(DASM_OPS_16);
232
160233int arcompact_handle18_00_dasm(DASM_OPS_16);
161234int arcompact_handle18_01_dasm(DASM_OPS_16);
162235int arcompact_handle18_02_dasm(DASM_OPS_16);
r242259r242260
508581
509582   switch (subinstr)
510583   {
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
575648   }
576649
577650   return size;
r242259r242260
633706
634707   switch (subinstr2)
635708   {
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)
700773   }
701774
702775   return size;
r242259r242260
766839int arcompact_handle04_2f_3c_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3c> (%08x)", op); return 4;}
767840int arcompact_handle04_2f_3d_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3d> (%08x)", op); return 4;}
768841int arcompact_handle04_2f_3e_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3e> (%08x)", op); return 4;}
769int arcompact_handle04_2f_3f_dasm(DASM_OPS_32)  { print("ZOPs (another table) (%08x)", op); return 4;}
770842
843int 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;
771848
849   op &= ~0x07007000;
772850
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   }
773918
919   return size;
920}
774921
922int arcompact_handle04_2f_3f_00_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_00> (%08x)", op); return 4;}
923int arcompact_handle04_2f_3f_01_dasm(DASM_OPS_32)  { print("SLEEP (%08x)", op); return 4;}
924int arcompact_handle04_2f_3f_02_dasm(DASM_OPS_32)  { print("SWI / TRAP0 (%08x)", op); return 4;}
925int arcompact_handle04_2f_3f_03_dasm(DASM_OPS_32)  { print("SYNC (%08x)", op); return 4;}
926int arcompact_handle04_2f_3f_04_dasm(DASM_OPS_32)  { print("RTIE (%08x)", op); return 4;}
927int arcompact_handle04_2f_3f_05_dasm(DASM_OPS_32)  { print("BRK (%08x)", op); return 4;}
928int arcompact_handle04_2f_3f_06_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_06> (%08x)", op); return 4;}
929int arcompact_handle04_2f_3f_07_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_07> (%08x)", op); return 4;}
930int arcompact_handle04_2f_3f_08_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_08> (%08x)", op); return 4;}
931int arcompact_handle04_2f_3f_09_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_09> (%08x)", op); return 4;}
932int arcompact_handle04_2f_3f_0a_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_0a> (%08x)", op); return 4;}
933int arcompact_handle04_2f_3f_0b_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_0b> (%08x)", op); return 4;}
934int arcompact_handle04_2f_3f_0c_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_0c> (%08x)", op); return 4;}
935int arcompact_handle04_2f_3f_0d_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_0d> (%08x)", op); return 4;}
936int arcompact_handle04_2f_3f_0e_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_0e> (%08x)", op); return 4;}
937int arcompact_handle04_2f_3f_0f_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_0f> (%08x)", op); return 4;}
938int arcompact_handle04_2f_3f_10_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_10> (%08x)", op); return 4;}
939int arcompact_handle04_2f_3f_11_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_11> (%08x)", op); return 4;}
940int arcompact_handle04_2f_3f_12_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_12> (%08x)", op); return 4;}
941int arcompact_handle04_2f_3f_13_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_13> (%08x)", op); return 4;}
942int arcompact_handle04_2f_3f_14_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_14> (%08x)", op); return 4;}
943int arcompact_handle04_2f_3f_15_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_15> (%08x)", op); return 4;}
944int arcompact_handle04_2f_3f_16_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_16> (%08x)", op); return 4;}
945int arcompact_handle04_2f_3f_17_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_17> (%08x)", op); return 4;}
946int arcompact_handle04_2f_3f_18_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_18> (%08x)", op); return 4;}
947int arcompact_handle04_2f_3f_19_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_19> (%08x)", op); return 4;}
948int arcompact_handle04_2f_3f_1a_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_1a> (%08x)", op); return 4;}
949int arcompact_handle04_2f_3f_1b_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_1b> (%08x)", op); return 4;}
950int arcompact_handle04_2f_3f_1c_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_1c> (%08x)", op); return 4;}
951int arcompact_handle04_2f_3f_1d_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_1d> (%08x)", op); return 4;}
952int arcompact_handle04_2f_3f_1e_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_1e> (%08x)", op); return 4;}
953int arcompact_handle04_2f_3f_1f_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_1f> (%08x)", op); return 4;}
954int arcompact_handle04_2f_3f_20_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_20> (%08x)", op); return 4;}
955int arcompact_handle04_2f_3f_21_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_21> (%08x)", op); return 4;}
956int arcompact_handle04_2f_3f_22_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_22> (%08x)", op); return 4;}
957int arcompact_handle04_2f_3f_23_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_23> (%08x)", op); return 4;}
958int arcompact_handle04_2f_3f_24_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_24> (%08x)", op); return 4;}
959int arcompact_handle04_2f_3f_25_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_25> (%08x)", op); return 4;}
960int arcompact_handle04_2f_3f_26_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_26> (%08x)", op); return 4;}
961int arcompact_handle04_2f_3f_27_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_27> (%08x)", op); return 4;}
962int arcompact_handle04_2f_3f_28_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_28> (%08x)", op); return 4;}
963int arcompact_handle04_2f_3f_29_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_29> (%08x)", op); return 4;}
964int arcompact_handle04_2f_3f_2a_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_2a> (%08x)", op); return 4;}
965int arcompact_handle04_2f_3f_2b_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_2b> (%08x)", op); return 4;}
966int arcompact_handle04_2f_3f_2c_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_2c> (%08x)", op); return 4;}
967int arcompact_handle04_2f_3f_2d_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_2d> (%08x)", op); return 4;}
968int arcompact_handle04_2f_3f_2e_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_2e> (%08x)", op); return 4;}
969int arcompact_handle04_2f_3f_2f_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_2f> (%08x)", op); return 4;}
970int arcompact_handle04_2f_3f_30_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_30> (%08x)", op); return 4;}
971int arcompact_handle04_2f_3f_31_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_31> (%08x)", op); return 4;}
972int arcompact_handle04_2f_3f_32_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_32> (%08x)", op); return 4;}
973int arcompact_handle04_2f_3f_33_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_33> (%08x)", op); return 4;}
974int arcompact_handle04_2f_3f_34_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_34> (%08x)", op); return 4;}
975int arcompact_handle04_2f_3f_35_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_35> (%08x)", op); return 4;}
976int arcompact_handle04_2f_3f_36_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_36> (%08x)", op); return 4;}
977int arcompact_handle04_2f_3f_37_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_37> (%08x)", op); return 4;}
978int arcompact_handle04_2f_3f_38_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_38> (%08x)", op); return 4;}
979int arcompact_handle04_2f_3f_39_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_39> (%08x)", op); return 4;}
980int arcompact_handle04_2f_3f_3a_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_3a> (%08x)", op); return 4;}
981int arcompact_handle04_2f_3f_3b_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_3b> (%08x)", op); return 4;}
982int arcompact_handle04_2f_3f_3c_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_3c> (%08x)", op); return 4;}
983int arcompact_handle04_2f_3f_3d_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_3d> (%08x)", op); return 4;}
984int arcompact_handle04_2f_3f_3e_dasm(DASM_OPS_32)  { print("<illegal 0x04_2f_3f_3e> (%08x)", op); return 4;}
985int 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
775994int arcompact_handle04_30_dasm(DASM_OPS_32)  { print("LD r-r (basecase 0x30) (%08x)", op); return 4;}
776995int arcompact_handle04_31_dasm(DASM_OPS_32)  { print("LD r-r (basecase 0x31) (%08x)", op); return 4;}
777996int arcompact_handle04_32_dasm(DASM_OPS_32)  { print("LD r-r (basecase 0x32) (%08x)", op); return 4;}
r242259r242260
8531072
8541073int arcompact_handle0e_dasm(DASM_OPS_16)
8551074{
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;
8581087}
8591088
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
1101int 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
1124int 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
1144int 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
1164int 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
8601187int arcompact_handle0f_dasm(DASM_OPS_16)
8611188{
8621189   // General Register Instructions (16-bit)
r242259r242260
9581285
9591286   switch (subinstr)
9601287   {
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
9691296   }
9701297
9711298   return size;
r242259r242260
10151342
10161343   switch (subinstr2)
10171344   {
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>
10261353   }
10271354
10281355   return size;
r242259r242260
10641391
10651392   switch (subinstr2)
10661393   {
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>
10991426   }
11001427
11011428   return size;
r242259r242260
11701497
11711498   switch (subinstr2)
11721499   {
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>
12051532   }
12061533
12071534   return size;
r242259r242260
13281655
13291656      switch (instruction) // 32-bit instructions (with optional extra dword for immediate data)
13301657      {
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)
13431670      }
13441671   }
13451672   else
r242259r242260
13501677
13511678      switch (instruction) // 16-bit instructions
13521679      {
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
13731700      }
13741701   }
13751702


Previous 199869 Revisions Next


© 1997-2024 The MAME Team