[comp.lang.c] 64 bit longs?

hpa@casbah.acns.nwu.edu (Peter Anvin) (01/13/91)

Hi everyone.

As far as I have understood, the following configurations are the most
common "C" implementations for word length:

(16 bit architecture)
char   =  8 bits
short  = 16 bits
int    = 16 bits
long   = 32 bits

(32 bit architecture)
char   =  8 bits
short  = 16 bits
int    = 32 bits
long   = 32 bits

Does anyone know if this configuration is supported (presumably on 32-bit
machines):
char   =  8 bits
short  = 16 bits
int    = 32 bits
long   = 64 bits

All machines I have tried C on have conformed to one of the former
configurations, none to the latter.



-- 
H. Peter Anvin +++ A Strange Stranger +++ N9ITP/SM4TKN +++
INTERNET:  hpa@casbah.acns.nwu.edu   FIDONET:  1:115/989.4
BITNET:    HPA@NUACC                 RBBSNET:  8:970/101.4

henry@zoo.toronto.edu (Henry Spencer) (01/14/91)

In article <2567@casbah.acns.nwu.edu> hpa@casbah.acns.nwu.edu (Peter Anvin) writes:
>Does anyone know if this configuration is supported (presumably on 32-bit
>machines):
>char   =  8 bits
>short  = 16 bits
>int    = 32 bits
>long   = 64 bits

It is intuitively appealing, but I would be surprised to see anyone
implementing it:  it would break far too much badly-written software.
-- 
If the Space Shuttle was the answer,   | Henry Spencer at U of Toronto Zoology
what was the question?                 |  henry@zoo.toronto.edu   utzoo!henry

gerst@ecs.umass.edu (01/14/91)

Reply-To: lloyd@ucs.umass.edu

>Subject: 64 bit longs?
>Message-ID: <2567@casbah.acns.nwu.edu>
>From: hpa@casbah.acns.nwu.edu (Peter Anvin)

>Hi everyone.

>As far as I have understood, the following configurations are the most
>common "C" implementations for word length:

[ some int size tables deleted ]

>Does anyone know if this configuration is supported (presumably on 32-bit
>machines):
>char   =  8 bits
>short  = 16 bits
>int    = 32 bits
>long   = 64 bits
>
>All machines I have tried C on have conformed to one of the former
>configurations, none to the latter.

interesting note:

Use C on a Cyber 180 arch. running NOS/VE it looks like this:

char   = 8 bits
short  = 64 bits
int    = 64 bits
long   = 64 bits
float  = 64 bits
double = 64 bits

This might have changed with the new C (CV2) compiler..but we have yet to
get it.

(the system software is in another language :)

>-- 
>H. Peter Anvin +++ A Strange Stranger +++ N9ITP/SM4TKN +++
>INTERNET:  hpa@casbah.acns.nwu.edu   FIDONET:  1:115/989.4
>BITNET:    HPA@NUACC                 RBBSNET:  8:970/101.4

Chris Lloyd - lloyd@ucs.umass.edu

gwyn@smoke.brl.mil (Doug Gwyn) (01/15/91)

In article <2567@casbah.acns.nwu.edu> hpa@casbah.acns.nwu.edu (Peter Anvin) writes:
-Does anyone know if this configuration is supported (presumably on 32-bit
-machines):
-char   =  8 bits
-short  = 16 bits
-int    = 32 bits
-long   = 64 bits

I haven't heard of any C implementations on 32-bit architectures that
elected to use 64 bits for longs; however, there are numerous 64-bit
architectures with the obvious C implementations for those systems.

bls@u02.svl.cdc.com (Brian Scearce) (01/15/91)

hpa@casbah.acns.nwu.edu (Peter Anvin) writes:
>Does anyone know if this configuration is supported (presumably on 32-bit
>machines):
>char   =  8 bits
>short  = 16 bits
>int    = 32 bits
>long   = 64 bits

The CDC Cyber 180 series (64 bit machine) has:
char   =  8 bits
short  = 32 bits
int    = 64 bits
long   = 64 bits
pointer= 48 bits

Not exactly what you asked for, but it does answer the subject line.

--
     Brian Scearce (bls@robin.svl.cdc.com  -or-  robin!bls@shamash.cdc.com)
 Any opinions expressed herein do not necessarily reflect CDC corporate policy.

meissner@osf.org (Michael Meissner) (01/15/91)

In article <1991Jan13.220958.16568@zoo.toronto.edu>
henry@zoo.toronto.edu (Henry Spencer) writes:

| In article <2567@casbah.acns.nwu.edu> hpa@casbah.acns.nwu.edu (Peter Anvin) writes:
| >Does anyone know if this configuration is supported (presumably on 32-bit
| >machines):
| >char   =  8 bits
| >short  = 16 bits
| >int    = 32 bits
| >long   = 64 bits
| 
| It is intuitively appealing, but I would be surprised to see anyone
| implementing it:  it would break far too much badly-written software.

I seem to recall that the first version of the Elxsi compilers had
this, but they soon changed long back to 32 bits, using long long as
the 64 bit int.  The reason I always heard was the difficulty of
porting the BSD networking code.  With respect to Elxsi, this is of
course academic, since I believe they went belly up.
--
Michael Meissner	email: meissner@osf.org		phone: 617-621-8861
Open Software Foundation, 11 Cambridge Center, Cambridge, MA, 02142

Considering the flames and intolerance, shouldn't USENET be spelled ABUSENET?

henry@zoo.toronto.edu (Henry Spencer) (01/15/91)

I wrote:
>>char   =  8 bits
>>short  = 16 bits
>>int    = 32 bits
>>long   = 64 bits
>
>It is intuitively appealing, but I would be surprised to see anyone
>implementing it:  it would break far too much badly-written software.

A friend, who has asked that his company not be identified, replied by mail:

> Oh god tell me about it.
> 
> [Our box] has just this model [...] and you would be
> horrified to find out how many problems this has caused in the
> Berkeley kernel networking code alone.....
-- 
If the Space Shuttle was the answer,   | Henry Spencer at U of Toronto Zoology
what was the question?                 |  henry@zoo.toronto.edu   utzoo!henry

wollman@emily.uvm.edu (Garrett Wollman) (01/15/91)

Wasn't someone doing something (I think in GCC) for 64-bit (and of
course non-standard) "long long" ints?

On a related note, does anyone know of a compiler that (assuming IEEE
types) supports a `long double' using the IEEE Temporary Real representation?

-GAWollman
Garrett A. Wollman - wollman@emily.uvm.edu

Disclaimer:  I'm not even sure this represents *my* opinion, never
mind UVM's, EMBA's, EMBA-CF's, or indeed anyone else's.

sef@kithrup.COM (Sean Eric Fagan) (01/18/91)

In article <1991Jan14.234609.6103@uvm.edu> wollman@emily.uvm.edu (Garrett Wollman) writes:
>On a related note, does anyone know of a compiler that (assuming IEEE
>types) supports a `long double' using the IEEE Temporary Real representation?

MSC 5.0 and later support the declaration 'long double'; 5.0 treates it as a
double, 6.0 uses the 80x87 temp-real stuff (80 bits).  Don't know if that is
IEEE format or not, though.

-- 
Sean Eric Fagan  | "I made the universe, but please don't blame me for it;
sef@kithrup.COM  |  I had a bellyache at the time."
-----------------+           -- The Turtle (Stephen King, _It_)
Any opinions expressed are my own, and generally unpopular with others.