Oracle FAQ | Your Portal to the Oracle Knowledge Grid |
![]() |
![]() |
Home -> Community -> Usenet -> c.d.o.server -> Re: www.microsoft.com sure needs a lot of silicon
Ravi K. Swamy wrote in article ...
>In article <33608441.5902_at_lehman.com>, Paul David Fox wrote:
>
>>Look at the MS APIs: multi-media, 3d/2d/sound, OLE, etc, etc.
>>Unix is still figuring out what the size of an 'int' is and
>
>Someone needs to read p. 36 of K&R (2nd Edition)
>
>--
>Ravi K. Swamy, Solicitor in Chief, CtWC rkswamy at eos.ncsu.edu
>http://www4.ncsu.edu/eos/users/r/rkswamy/www/ root@genom.com
>
hmm and someone else needs to look around a little. Theory and practice are not exactly the same.
perhaps you will find the following interesting ?
http://www.unix.digital.com/unix/64bit/api.html
"
[....]
When UNIX was first created in 1969, it was developed to run on a 16-bit
computer architecture. The integer arithmetic operators and pointer
operators used 16-bit quantities. The C language not only supported 16-bit
integer and pointer data types but it also supported a 32-bit integer data
type that could be emulated on hardware that does not support 32-bit
arithmetic operations.
When the 32-bit minicomputer was introduced in the late seventies, UNIX was
ported to this new class of machine. The predominate hardware architectures
of the Eighties provided 32-bit integer arithmetic operators and 32-bit
pointers. The C language for this class of machines developed a data model
with a 16-bit short-integer type, a 32-bit integer type and a 32-bit
pointer. During the Eighties, this was the predominate data model available
with UNIX systems that execute on a 32-bit computer architecture.
[...]
To describe these two systems in the jargon of today, UNIX on 32-bit
minicomputers is an ILP-32 data model because the Integer, Long and Pointer
data types are all 32-bits in size. DOS on the Intel architecture started
out as IP-16 data model and transitioned to an LP-32 data model in the
later years.
The standardization of UNIX began with a /usr/group committee in 1983. By
1988, the IEEE POSIX committee and the X/Open "consortium" had developed
detailed specifications that were based upon the predominate implementations
of the time. These committees were striving to develop architecture
neutral definitions that could be implemented on any hardware architecture.
Since the standards were based on existing practice and the ILP model did
not change during this gestation period, a dependency upon all conforming
implementations using the ILP model was inadvertently incorporated into
these standards. There were implementations available both as ILP-32 and as
ILP-64 by the end of the decade.
Standardization of the ANSI-C language left the definition of the short
integer, the integer, the long integer and the pointer vague to avoid
artificially constraining hardware architectures that might benefit from
defining these data types each independent from the other. It is possible,
for instance, to define a short as 16-bits, an integer as 32-bits, a long
as 64-bits and a pointer as 128-bits.
[...]
"
All that aside, I seem to remember that all that K&R ever said was that a
long is atleast as large as
a short and possibly larger ? and that a long is atleast as large as a
integer possibly larger etc ?
What is the exact quote from K&R C ?
Could someone please give us the quote ?
![]() |
![]() |