Add invalid_float (from opcodes/ns32k-dis.c).
This commit is contained in:
parent
31289a4af8
commit
5748a83696
|
@ -26,6 +26,54 @@ _initialize_ns32k_tdep ()
|
|||
tm_print_insn = print_insn_ns32k;
|
||||
}
|
||||
|
||||
static int
|
||||
bit_extract (buffer, offset, count)
|
||||
char *buffer;
|
||||
int offset;
|
||||
int count;
|
||||
{
|
||||
int result;
|
||||
int mask;
|
||||
int bit;
|
||||
|
||||
buffer += offset >> 3;
|
||||
offset &= 7;
|
||||
bit = 1;
|
||||
result = 0;
|
||||
while (count--)
|
||||
{
|
||||
if ((*buffer & (1 << offset)))
|
||||
result |= bit;
|
||||
if (++offset == 8)
|
||||
{
|
||||
offset = 0;
|
||||
buffer++;
|
||||
}
|
||||
bit <<= 1;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
invalid_float(p, len)
|
||||
register char *p;
|
||||
register int len;
|
||||
{
|
||||
register val;
|
||||
|
||||
if ( len == 4 )
|
||||
val = (bit_extract(p, 23, 8)/*exponent*/ == 0xff
|
||||
|| (bit_extract(p, 23, 8)/*exponent*/ == 0 &&
|
||||
bit_extract(p, 0, 23)/*mantisa*/ != 0));
|
||||
else if ( len == 8 )
|
||||
val = (bit_extract(p, 52, 11)/*exponent*/ == 0x7ff
|
||||
|| (bit_extract(p, 52, 11)/*exponent*/ == 0
|
||||
&& (bit_extract(p, 0, 32)/*low mantisa*/ != 0
|
||||
|| bit_extract(p, 32, 20)/*high mantisa*/ != 0)));
|
||||
else
|
||||
val = 1;
|
||||
return (val);
|
||||
}
|
||||
|
||||
sign_extend (value, bits)
|
||||
{
|
||||
value = value & ((1 << bits) - 1);
|
||||
|
|
Loading…
Reference in New Issue