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

Michael Snyder msnyder@redhat.com
Sun Apr 13 16:57:00 GMT 2003


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.



More information about the Gdb-patches mailing list