Portability bug in integral conversion

bearophile bearophileHUGS at lycos.com
Mon Jan 17 12:55:22 PST 2011


Walter:

> bearophile wrote:
> > Walter:
> > 
> >> Look at the asm dump of a function. It's full of add's - not only ADD 
> >> instructions, but addressing mode multiplies and add's. Subtraction is
> >> often expressed in terms of addition, relying on twos-complement
> >> wraparound.
> > 
> > This answer is a bit relevant only if the programmer is using inline asm,
> > while the discussion was about unsigned differences in D code, that are
> > uncommon in my D code. Sometimes I even assign lengths to signed-word
> > variables, to avoid some signed/unsigned comparison bugs.
> 
> A lot of the addition is also carried out at link time, and even by the loader. 
> Subtraction is done by relying on overflow.

The back-end carries out my D operations using unsigned differences on CPU registers, the linker has to use them, etc. But the discussion was about explicit operations done by the D code written by the programmer. Modular arithmetic done by unsigned fixed bitfields is mathematically sound, but it's a bit too much bug-prone for normal Safe D modules :-)

Bye,
bearophile


More information about the Digitalmars-d mailing list