This is the mail archive of the gdb-patches@sources.redhat.com mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH/RFA] h8300 sim: add daa and das insns


Kazu Hirata wrote:
> 
> Hi Michael,
> 
> > Here's my implementation of daa/das:
> 
> +         if (!c && (0 <= (res >>  4) && (res >>  4) <= 9) &&
> +             !h && (0 <= (res & 0xf) && (res & 0xf) <= 9))
> 
> The GNU coding standard says
> 
>   if (A
>       && B)

Ugh.  I hate it, but OK.  My way scans so much better...

> so we would have to fix formatting.
> 
> +         else if ( c && (1 <= (res >>  4) && (res >>  4) <= 2) &&
> +                  !h && (0 <= (res & 0xf) && (res & 0xf) <= 9))
> +           res = res + 0x60;           /* Value added == 60.  */
> +         else if ( c && (1  <= (res >>  4) && (res >>  4) <=  2) &&
> +                  !h && (10 <= (res & 0xf) && (res & 0xf) <= 15))
> +           res = res + 0x66;           /* Value added == 66.  */
> +         else if (c && (1 <= (res >>  4) && (res >>  4) <= 3) &&
> +                  h && (0 <= (res & 0xf) && (res & 0xf) <= 3))
> +           res = res + 0x66;           /* Value added == 66.  */
> 
> IMHO, for the last three cases of DAA, the carry flag won't be set to
> 1 because adding 0x66 does not generate a carry.  We can put a hack
> like "res |= 0x100;" after "res += 0x66;" or replace "res += 0x66;"
> with "res += 0x166;" so that "alu8:" can take care of this, but I
> don't know how much you like these. :-)

Right you are.  I think your suggestion is both necessary and sufficient.
Sure it's odd, but this is binary coded decimal we're talking about...

I'll check it in with your suggestions.  Thanks.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]