From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: weis Received: (from weis@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id MAA25161 for caml-redist; Fri, 28 Apr 2000 12:19:11 +0200 (MET DST) Received: (from xleroy@localhost) by pauillac.inria.fr (8.7.6/8.7.3) id KAA00242; Fri, 28 Apr 2000 10:35:09 +0200 (MET DST) Message-ID: <20000428103509.02540@pauillac.inria.fr> Date: Fri, 28 Apr 2000 10:35:09 +0200 From: Xavier Leroy To: John Max Skaller Cc: Max Skaller , caml-list@pauillac.inria.fr Subject: Re: what does "32-bit integer" mean? References: <20000425152615.25958@pauillac.inria.fr> <39069410.FC5F5DBB@in.ot.com.au> <20000427101749.40550@pauillac.inria.fr> <3908F26D.98C27C2E@maxtal.com.au> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Mailer: Mutt 0.89.1 In-Reply-To: <3908F26D.98C27C2E@maxtal.com.au>; from John Max Skaller on Fri, Apr 28, 2000 at 12:07:41PM +1000 Sender: weis > > (I think you just won the first prize for most vacuous question asked on > > this mailing list.) > Thanks :-( My apologies for the sarcasm; I know I shouldn't have done it, but I just couldn't resist :-) > In particular, since ocaml does not provide any unsigned integers, > it is exposed to the mal-specified signed operations of the C > compiler. I do NOT like this. I would rather that the > ocaml team provide a mathematical definition, and MAKE > the implementation work that way on all target machines > independently of what C does. We could easily specify Caml's integers as twos complement, with division that rounds towards zero, signed modulus, etc, etc --- all the guarantees that C doesn't give us ---, then check those properties during configuration and refuse to compile OCaml on machines that do not meet those properties. Given that all modern machines meet them, that would not be a limitation in practice. The other option (emulate twos complement / signed modulus / etc) on machines that do not provide them naturally is too much work, and just pointless (since such machines no longer exist). > I am a member of the C committee. > The issues here are important and non-trivial. > I write algorithms that depend on it :-) > I point them out only as a service to the ocaml community > (myself included of course :-) Thanks. But as a member of the C committee, you could make all of us (not just Caml users, but C programmers as well) a HUGE service by pushing forward a C standard that fully specifies signed integer arithmetic, e.g. like Java does. (While you're at it, please standardize IEEE floats as well.) > I also do not use the bytecode interpreter. > I'm interested in what the optimising compiler does. The situation is much better on the native compiler front: since we know exactly which processors are supported, we can actually guarantee twos complement, division that rounds towards zero, signed modulus, etc, etc, just because all the supported processors implement those properties. The limiting factor is the bytecode interpreter, at least as long as we want it to work on any system with an ANSI-compliant C compiler. - Xavier Leroy