* tic80-opc.c (tic80_predefined_symbols): Add symbolic

representations for the floating point BITNUM values.
This commit is contained in:
Fred Fish 1997-02-18 23:34:35 +00:00
parent 92a956e87d
commit 49d1bbbef2
2 changed files with 94 additions and 35 deletions

View file

@ -1,3 +1,22 @@
start-sanitize-tic80
Tue Feb 18 16:32:08 1997 Fred Fish <fnf@cygnus.com>
* tic80-opc.c (tic80_predefined_symbols): Add symbolic
representations for the floating point BITNUM values.
Fri Feb 14 12:14:05 1997 Fred Fish <fnf@cygnus.com>
* tic80-opc.c (tic80_predefined_symbols): Store BITNUM values
in the table in one's complement form, as they appear in the
actual instruction.
(tic80_symbol_to_value): Use macros to access predefined
symbol fields.
(tic80_value_to_symbol): Ditto.
(tic80_next_predefined_symbol): New function.
* tic80-dis.c (print_operand_bitnum): Remove code that did
one's complement for BITNUM values.
end-sanitize-tic80
start-sanitize-r5900
Fri Feb 14 13:56:51 1997 Gavin Koch <gavin@cygnus.com>

View file

@ -79,9 +79,10 @@ const struct predefined_symbol tic80_predefined_symbols[] =
{ "ECOMCNTL", TIC80_OPERAND_CR | 0x33 },
{ "EIP", TIC80_OPERAND_CR | 1 },
{ "EPC", TIC80_OPERAND_CR | 0 },
{ "eq.b", TIC80_OPERAND_BITNUM | 0 },
{ "eq.h", TIC80_OPERAND_BITNUM | 10 },
{ "eq.w", TIC80_OPERAND_BITNUM | 20 },
{ "eq.b", TIC80_OPERAND_BITNUM | (~0 & 0x1F) },
{ "eq.f", TIC80_OPERAND_BITNUM | (~20 & 0x1F) },
{ "eq.h", TIC80_OPERAND_BITNUM | (~10 & 0x1F) },
{ "eq.w", TIC80_OPERAND_BITNUM | (~20 & 0x1F) },
{ "eq0.b", TIC80_OPERAND_CC | 2 },
{ "eq0.h", TIC80_OPERAND_CC | 10 },
{ "eq0.w", TIC80_OPERAND_CC | 18 },
@ -91,26 +92,30 @@ const struct predefined_symbol tic80_predefined_symbols[] =
{ "FLTOP", TIC80_OPERAND_CR | 0x10 },
{ "FLTTAG", TIC80_OPERAND_CR | 0x12 },
{ "FPST", TIC80_OPERAND_CR | 8 },
{ "ge.b", TIC80_OPERAND_BITNUM | 5 },
{ "ge.h", TIC80_OPERAND_BITNUM | 15 },
{ "ge.w", TIC80_OPERAND_BITNUM | 25 },
{ "ge.b", TIC80_OPERAND_BITNUM | (~5 & 0x1F) },
{ "ge.f", TIC80_OPERAND_BITNUM | (~25 & 0x1F) },
{ "ge.h", TIC80_OPERAND_BITNUM | (~15 & 0x1F) },
{ "ge.w", TIC80_OPERAND_BITNUM | (~25 & 0x1F) },
{ "ge0.b", TIC80_OPERAND_CC | 3 },
{ "ge0.h", TIC80_OPERAND_CC | 11 },
{ "ge0.w", TIC80_OPERAND_CC | 19 },
{ "gt.b", TIC80_OPERAND_BITNUM | 2 },
{ "gt.h", TIC80_OPERAND_BITNUM | 12 },
{ "gt.w", TIC80_OPERAND_BITNUM | 22 },
{ "gt.b", TIC80_OPERAND_BITNUM | (~2 & 0x1F) },
{ "gt.f", TIC80_OPERAND_BITNUM | (~22 & 0x1F) },
{ "gt.h", TIC80_OPERAND_BITNUM | (~12 & 0x1F) },
{ "gt.w", TIC80_OPERAND_BITNUM | (~22 & 0x1F) },
{ "gt0.b", TIC80_OPERAND_CC | 1 },
{ "gt0.h", TIC80_OPERAND_CC | 9 },
{ "gt0.w", TIC80_OPERAND_CC | 17 },
{ "hi.b", TIC80_OPERAND_BITNUM | 6 },
{ "hi.h", TIC80_OPERAND_BITNUM | 16 },
{ "hi.w", TIC80_OPERAND_BITNUM | 26 },
{ "hs.b", TIC80_OPERAND_BITNUM | 9 },
{ "hs.h", TIC80_OPERAND_BITNUM | 19 },
{ "hs.w", TIC80_OPERAND_BITNUM | 29 },
{ "hi.b", TIC80_OPERAND_BITNUM | (~6 & 0x1F) },
{ "hi.h", TIC80_OPERAND_BITNUM | (~16 & 0x1F) },
{ "hi.w", TIC80_OPERAND_BITNUM | (~26 & 0x1F) },
{ "hs.b", TIC80_OPERAND_BITNUM | (~9 & 0x1F) },
{ "hs.h", TIC80_OPERAND_BITNUM | (~19 & 0x1F) },
{ "hs.w", TIC80_OPERAND_BITNUM | (~29 & 0x1F) },
{ "ib.f", TIC80_OPERAND_BITNUM | (~28 & 0x1F) },
{ "IE", TIC80_OPERAND_CR | 6 },
{ "ILRU", TIC80_OPERAND_CR | 0x300 },
{ "in.f", TIC80_OPERAND_BITNUM | (~27 & 0x1F) },
{ "IN0P", TIC80_OPERAND_CR | 0x4000 },
{ "IN1P", TIC80_OPERAND_CR | 0x4001 },
{ "INTPEN", TIC80_OPERAND_CR | 4 },
@ -130,35 +135,41 @@ const struct predefined_symbol tic80_predefined_symbols[] =
{ "ITAG7", TIC80_OPERAND_CR | 0x207 },
{ "ITAG8", TIC80_OPERAND_CR | 0x208 },
{ "ITAG9", TIC80_OPERAND_CR | 0x209 },
{ "le.b", TIC80_OPERAND_BITNUM | 3 },
{ "le.h", TIC80_OPERAND_BITNUM | 13 },
{ "le.w", TIC80_OPERAND_BITNUM | 23 },
{ "le.b", TIC80_OPERAND_BITNUM | (~3 & 0x1F) },
{ "le.f", TIC80_OPERAND_BITNUM | (~23 & 0x1F) },
{ "le.h", TIC80_OPERAND_BITNUM | (~13 & 0x1F) },
{ "le.w", TIC80_OPERAND_BITNUM | (~23 & 0x1F) },
{ "le0.b", TIC80_OPERAND_CC | 6 },
{ "le0.h", TIC80_OPERAND_CC | 14 },
{ "le0.w", TIC80_OPERAND_CC | 22 },
{ "lo.b", TIC80_OPERAND_BITNUM | 8 },
{ "lo.h", TIC80_OPERAND_BITNUM | 18 },
{ "lo.w", TIC80_OPERAND_BITNUM | 28 },
{ "ls.b", TIC80_OPERAND_BITNUM | 7 },
{ "ls.h", TIC80_OPERAND_BITNUM | 17 },
{ "ls.w", TIC80_OPERAND_BITNUM | 27 },
{ "lt.b", TIC80_OPERAND_BITNUM | 4 },
{ "lt.h", TIC80_OPERAND_BITNUM | 14 },
{ "lt.w", TIC80_OPERAND_BITNUM | 24 },
{ "lo.b", TIC80_OPERAND_BITNUM | (~8 & 0x1F) },
{ "lo.h", TIC80_OPERAND_BITNUM | (~18 & 0x1F) },
{ "lo.w", TIC80_OPERAND_BITNUM | (~28 & 0x1F) },
{ "ls.b", TIC80_OPERAND_BITNUM | (~7 & 0x1F) },
{ "ls.h", TIC80_OPERAND_BITNUM | (~17 & 0x1F) },
{ "ls.w", TIC80_OPERAND_BITNUM | (~27 & 0x1F) },
{ "lt.b", TIC80_OPERAND_BITNUM | (~4 & 0x1F) },
{ "lt.f", TIC80_OPERAND_BITNUM | (~24 & 0x1F) },
{ "lt.h", TIC80_OPERAND_BITNUM | (~14 & 0x1F) },
{ "lt.w", TIC80_OPERAND_BITNUM | (~24 & 0x1F) },
{ "lt0.b", TIC80_OPERAND_CC | 4 },
{ "lt0.h", TIC80_OPERAND_CC | 12 },
{ "lt0.w", TIC80_OPERAND_CC | 20 },
{ "MIP", TIC80_OPERAND_CR | 0x31 },
{ "MPC", TIC80_OPERAND_CR | 0x30 },
{ "ne.b", TIC80_OPERAND_BITNUM | 1 },
{ "ne.h", TIC80_OPERAND_BITNUM | 11 },
{ "ne.w", TIC80_OPERAND_BITNUM | 21 },
{ "ne.b", TIC80_OPERAND_BITNUM | (~1 & 0x1F) },
{ "ne.f", TIC80_OPERAND_BITNUM | (~21 & 0x1F) },
{ "ne.h", TIC80_OPERAND_BITNUM | (~11 & 0x1F) },
{ "ne.w", TIC80_OPERAND_BITNUM | (~21 & 0x1F) },
{ "ne0.b", TIC80_OPERAND_CC | 5 },
{ "ne0.h", TIC80_OPERAND_CC | 13 },
{ "ne0.w", TIC80_OPERAND_CC | 21 },
{ "nev.b", TIC80_OPERAND_CC | 0 },
{ "nev.h", TIC80_OPERAND_CC | 8 },
{ "nev.w", TIC80_OPERAND_CC | 16 },
{ "ob.f", TIC80_OPERAND_BITNUM | (~29 & 0x1F) },
{ "or.f", TIC80_OPERAND_BITNUM | (~31 & 0x1F) },
{ "ou.f", TIC80_OPERAND_BITNUM | (~26 & 0x1F) },
{ "OUTP", TIC80_OPERAND_CR | 0x4002 },
{ "PKTREQ", TIC80_OPERAND_CR | 0xD },
{ "PPERROR", TIC80_OPERAND_CR | 0xA },
@ -198,6 +209,7 @@ const struct predefined_symbol tic80_predefined_symbols[] =
{ "SYSTMP", TIC80_OPERAND_CR | 0x21 },
{ "TCOUNT", TIC80_OPERAND_CR | 0xE },
{ "TSCALE", TIC80_OPERAND_CR | 0xF },
{ "uo.f", TIC80_OPERAND_BITNUM | (~30 & 0x1F) },
};
const int tic80_num_predefined_symbols = sizeof (tic80_predefined_symbols) / sizeof (struct predefined_symbol);
@ -246,9 +258,9 @@ tic80_symbol_to_value (name, class)
else
{
pdsp = &tic80_predefined_symbols[middle];
if ((class == 0) || (class & pdsp -> value))
if ((class == 0) || (class & PDS_VALUE (pdsp)))
{
rtnval = pdsp -> value;
rtnval = PDS_VALUE (pdsp);
}
/* For now we assume that there are no duplicate names */
break;
@ -275,13 +287,13 @@ tic80_value_to_symbol (val, class)
pdsp < tic80_predefined_symbols + tic80_num_predefined_symbols;
pdsp++)
{
ival = pdsp -> value & ~TIC80_OPERAND_MASK;
ival = PDS_VALUE (pdsp) & ~TIC80_OPERAND_MASK;
if (ival == val)
{
if ((class == 0) || (class & pdsp -> value))
if ((class == 0) || (class & PDS_VALUE (pdsp)))
{
/* Found the desired match */
name = pdsp -> name;
name = PDS_NAME (pdsp);
break;
}
}
@ -289,6 +301,34 @@ tic80_value_to_symbol (val, class)
return (name);
}
/* This function returns a pointer to the next symbol in the predefined
symbol table after PDSP, or NULL if PDSP points to the last symbol. If
PDSP is NULL, it returns the first symbol in the table. Thus it can be
used to walk through the table by first calling it with NULL and then
calling it with each value it returned on the previous call, until it
returns NULL. */
const struct predefined_symbol *
tic80_next_predefined_symbol (pdsp)
const struct predefined_symbol *pdsp;
{
if (pdsp == NULL)
{
pdsp = tic80_predefined_symbols;
}
else if (pdsp >= tic80_predefined_symbols &&
pdsp < tic80_predefined_symbols + tic80_num_predefined_symbols - 1)
{
pdsp++;
}
else
{
pdsp = NULL;
}
return (pdsp);
}
/* The operands table. The fields are: