Previous 199869 Revisions Next

r21652 Wednesday 6th March, 2013 at 19:04:47 UTC by smf
moved CPU_DISASSEMBLE into the disassembler (nw)
[src/emu/cpu/i860]i860.c i860dis.c

trunk/src/emu/cpu/i860/i860.c
r21651r21652
4949}
5050
5151
52/***************************************************************************
53 *  Disassembler hook
54 ***************************************************************************/
52extern CPU_DISASSEMBLE( i860 );
5553
56static CPU_DISASSEMBLE( i860 )
57{
58   extern unsigned disasm_i860(char*, unsigned, UINT32);
59
60   /* Hard-coded little endian for now.  */
61   return disasm_i860(buffer, pc, (oprom[0] << 0)  |
62                           (oprom[1] << 8)  |
63                           (oprom[2] << 16) |
64                           (oprom[3] << 24));
65}
66
67
6854/**************************************************************************
6955 * The actual decode and execute code.
7056 **************************************************************************/
trunk/src/emu/cpu/i860/i860dis.c
r21651r21652
646646}
647647
648648
649/* Entry point for disassembler.  */
650unsigned disasm_i860(char *buf, unsigned pc, UINT32 insn)
649CPU_DISASSEMBLE( i860 )
651650{
651   UINT32 insn = (oprom[0] << 0) |
652      (oprom[1] << 8)  |
653      (oprom[2] << 16) |
654      (oprom[3] << 24);
655
652656   int unrecognized_op = 1;
653657   int upper_6bits = (insn >> 26) & 0x3f;
654658   char flags = decode_tbl[upper_6bits].flags;
655659   if (flags & DEC_DECODED)
656660   {
657661      const char *s = decode_tbl[upper_6bits].mnemonic;
658      decode_tbl[upper_6bits].insn_dis (buf, (char *)s, pc, insn);
662      decode_tbl[upper_6bits].insn_dis (buffer, (char *)s, pc, insn);
659663      unrecognized_op = 0;
660664   }
661665   else if (flags & DEC_MORE)
r21651r21652
667671         const char *s = fp_decode_tbl[insn & 0x7f].mnemonic;
668672         if (fp_flags & DEC_DECODED)
669673         {
670            fp_decode_tbl[insn & 0x7f].insn_dis (buf, (char *)s, pc, insn);
674            fp_decode_tbl[insn & 0x7f].insn_dis (buffer, (char *)s, pc, insn);
671675            unrecognized_op = 0;
672676         }
673677      }
r21651r21652
678682         const char *s = core_esc_decode_tbl[insn & 0x3].mnemonic;
679683         if (esc_flags & DEC_DECODED)
680684         {
681            core_esc_decode_tbl[insn & 0x3].insn_dis (buf, (char *)s, pc, insn);
685            core_esc_decode_tbl[insn & 0x3].insn_dis (buffer, (char *)s, pc, insn);
682686            unrecognized_op = 0;
683687         }
684688      }
685689   }
686690
687691   if (unrecognized_op)
688      sprintf (buf, ".long\t%#08x", insn);
692      sprintf (buffer, ".long\t%#08x", insn);
689693
690694   /* Replace tabs with spaces */
691   i860_dasm_tab_replacer(buf, 10);
695   i860_dasm_tab_replacer(buffer, 10);
692696
693697   /* Return number of bytes disassembled.  */
694698   /* MAME dasm flags haven't been added yet */

Previous 199869 Revisions Next


© 1997-2024 The MAME Team