Re: Question: Checking register value in buffer

Andrew Cagney
2005-05-19T14:46:57Z

Joel Brobecker wrote:
> 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:

Have you looked at doublest.[hc]?

> 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,