Re: Re: [ZEND-ENGINE-CVS] cvs: ZendEngine2 / zend_operators.c

From: Date: Sun, 22 Feb 2004 22:53:40 +0000
Subject: Re: Re: [ZEND-ENGINE-CVS] cvs: ZendEngine2 / zend_operators.c
References: 1 2 3 4 5  Groups: php.internals 
Request: Send a blank email to internals+get-8069@lists.php.net to get a copy of this message
> George Schlossnagle wrote: > > > >On Feb 22, 2004, at 5:15 PM, Derick Rethans wrote: > > > >>On Sun, 22 Feb 2004 cm@leetspeak.org wrote: > >> > >>>It's generating an idivl, which gives you an exception if the (signed) > >>>result is too large (a.k.a. integer overflow). > >>> > >>>Did you notice your compiler warning "this decimal constant is unsigned > >>>only in ISO C90"? ;) > >> > >> > >>Yes I did > >> > >>>+2147483648 is: 10000000 00000000 00000000 00000000. > >>>-2147483648 is too large to be represented by a signed integer (as it > >>>would be ~(+2147483648) + 1, > >> > >> > >>No, -2147483648 is the lower bound and 2147483647 is the upper bound for > >>signed integers. > >> > >>-2147483648 = 10000000000000000000000000000000 > >> 2147483647 = 01111111111111111111111111111111 > >> > >>it still doesn't explain the FPE here. What does explain it is that > >>-2147483648 / -1 = 2147483648 which is too large. > > > > > >Doesn't the rval in modulus need to be unsigned? > No, it's implementation-defined though if one of the operands is > negative, IIRC. > no, -22 % 7. They truncate towards 0. -sterling

« previous php.internals (#8069) next »