Question: Checking register value in buffer

Joel Brobecker
2005-05-19T02:04:52Z

Hello,

I'm wondering if there is a usual way for what I'm trying to do.
Basically, I have fetched a 64bit floating point register on alpha
using:

regcache_cooked_read (current_regcache, (insn >> 21) & 0x1f, reg);

where reg is a ``char reg[8]''.

Now, I'd like to perform the following tests:

zero (reg & 0x7fff_ffff_ffff_ffff) == 0
sign (reg & 0x8000_0000_0000_0000) != 0

Right now, I'm juggling with each byte of the buffer, and doing checks
like this:

fp_register_zero_p (char *buf)
{
return ((buf[1] & 0x0f) == 0 && buf[2] == 0 && buf[3] == 0
&& buf[4] == 0 && buf[5] == 0 && buf[6] == 0 && buf[7] == 0);

I thought about something like:

LONGEST rav = extract_signed_integer (buf, 8)

and then do the test using integer arithmetics. But then I'm not guarantied
that LONGEST is at least 64bit long, am I.

How are these sort of checks usually done in GDB?

Thanks,
--
Joel