Question: Checking register value in buffer

Andrew Cagney cagney@gnu.org
Thu May 19 16:41:00 GMT 2005


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,



More information about the Gdb-patches mailing list