* z8k-dis.c (intr_names): Removed.
(print_intr, print_flags): New functions. (unparse_instr): Use new functions.
This commit is contained in:
parent
6a9756ed29
commit
a0bd404eac
2 changed files with 61 additions and 14 deletions
|
@ -1,3 +1,9 @@
|
|||
2003-12-15 Christian Groessler <chris@groessler.org>
|
||||
|
||||
* z8k-dis.c (intr_names): Removed.
|
||||
(print_intr, print_flags): New functions.
|
||||
(unparse_instr): Use new functions.
|
||||
|
||||
2003-12-15 Kazuhiro Inaoka <inaoka.kazuhiro@renesas.com>
|
||||
|
||||
* m32r-opc.c: Regenerate.
|
||||
|
|
|
@ -26,7 +26,7 @@
|
|||
#include "z8k-opc.h"
|
||||
|
||||
#include <setjmp.h>
|
||||
|
||||
|
||||
typedef struct
|
||||
{
|
||||
/* These are all indexed by nibble number (i.e only every other entry
|
||||
|
@ -472,12 +472,53 @@ unpack_instr (instr_data_s *instr_data, int is_segmented, disassemble_info *info
|
|||
}
|
||||
}
|
||||
|
||||
static char *intr_names[] = {
|
||||
"all", /* 0 */
|
||||
"vi", /* 1 */
|
||||
"nvi", /* 2 */
|
||||
"none" /* 3 */
|
||||
};
|
||||
static void
|
||||
print_intr(char *tmp_str, unsigned long interrupts)
|
||||
{
|
||||
int comma = 0;
|
||||
|
||||
*tmp_str = 0;
|
||||
if (! (interrupts & 2))
|
||||
{
|
||||
strcat (tmp_str, "vi");
|
||||
comma = 1;
|
||||
}
|
||||
if (! (interrupts & 1))
|
||||
{
|
||||
if (comma) strcat (tmp_str, ",");
|
||||
strcat (tmp_str, "nvi");
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
print_flags(char *tmp_str, unsigned long flags)
|
||||
{
|
||||
int comma = 0;
|
||||
|
||||
*tmp_str = 0;
|
||||
if (flags & 8)
|
||||
{
|
||||
strcat (tmp_str, "c");
|
||||
comma = 1;
|
||||
}
|
||||
if (flags & 4)
|
||||
{
|
||||
if (comma) strcat (tmp_str, ",");
|
||||
strcat (tmp_str, "z");
|
||||
comma = 1;
|
||||
}
|
||||
if (flags & 2)
|
||||
{
|
||||
if (comma) strcat (tmp_str, ",");
|
||||
strcat (tmp_str, "s");
|
||||
comma = 1;
|
||||
}
|
||||
if (flags & 1)
|
||||
{
|
||||
if (comma) strcat (tmp_str, ",");
|
||||
strcat (tmp_str, "p");
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
unparse_instr (instr_data_s *instr_data, int is_segmented)
|
||||
|
@ -529,12 +570,12 @@ unparse_instr (instr_data_s *instr_data, int is_segmented)
|
|||
strcat (out_str, tmp_str);
|
||||
break;
|
||||
case CLASS_IMM:
|
||||
if (datum_value == ARG_IMM2) /* True with EI/DI instructions only. */
|
||||
{
|
||||
sprintf (tmp_str, "%s", intr_names[instr_data->interrupts]);
|
||||
strcat (out_str, tmp_str);
|
||||
break;
|
||||
}
|
||||
if (datum_value == ARG_IMM2) /* True with EI/DI instructions only. */
|
||||
{
|
||||
print_intr (tmp_str, instr_data->interrupts);
|
||||
strcat (out_str, tmp_str);
|
||||
break;
|
||||
}
|
||||
sprintf (tmp_str, "#0x%0lx", instr_data->immediate);
|
||||
strcat (out_str, tmp_str);
|
||||
break;
|
||||
|
@ -563,7 +604,7 @@ unparse_instr (instr_data_s *instr_data, int is_segmented)
|
|||
strcat (out_str, tmp_str);
|
||||
break;
|
||||
case CLASS_FLAGS:
|
||||
sprintf (tmp_str, "0x%0lx", instr_data->flags);
|
||||
print_flags(tmp_str, instr_data->flags);
|
||||
strcat (out_str, tmp_str);
|
||||
break;
|
||||
case CLASS_REG_BYTE:
|
||||
|
|
Loading…
Reference in a new issue