home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #18 / NN_1992_18.iso / spool / comp / arch / 9020 < prev    next >
Encoding:
Internet Message Format  |  1992-08-22  |  3.5 KB

  1. Path: sparky!uunet!haven.umd.edu!darwin.sura.net!mips!swrinde!news.dell.com!uudell!bigtex!texsun!cronkite.Central.Sun.COM!news2me.ebay.sun.com!exodus.Eng.Sun.COM!rbbb.Eng.Sun.COM!chased
  2. From: chased@rbbb.Eng.Sun.COM (David Chase)
  3. Newsgroups: comp.arch
  4. Subject: Re: 32 => 64 Transition
  5. Message-ID: <l9b1usINN2aj@exodus.Eng.Sun.COM>
  6. Date: 22 Aug 92 00:18:36 GMT
  7. References: <l8u555INN5q6@spim.mips.com> <1992Aug11.125326.16719@email.tuwien.ac.at> <id.UHAS.9TA@ferranti.com> <robert.713773090@cs.anu.edu.au> <1992Aug18.094549.25179@awdprime.austin.ibm.com>
  8. Organization: Sun Microsystems, Mt. View, Ca.
  9. Lines: 65
  10. NNTP-Posting-Host: rbbb
  11.  
  12. guyd@harpo.hursley.ibm.com (Guy Dawson) writes:
  13. >Reading K&R2, section 2.2 Data Types and Sizes, for a '64 bit' CPU I
  14. >would expect the following sizes :
  15.  
  16. >char        8 bits
  17. >short        32 bits
  18. >int        64 bits
  19. >long        128 bits
  20.  
  21. >For me, the key phrase is given in the short table of sizes :-
  22.  
  23. >int    an integer, typically reflecting the natural size of integers on the
  24. >host machine
  25.  
  26. The talk of "natural size" on the host machine is a little misguided,
  27. if you ask me.  There's not an appreciable performance penalty in
  28. having an integer be smaller than the register width on a machine
  29. (consider the Macintosh, where many C compilers give you 16-bit
  30. integers).  In the case where you need a big integer, and you need
  31. portable code, saying "int" won't help you, because the size isn't
  32. portable -- better to punt and say "long long" (yes, I know it is not
  33. strictly compliant -- a true standards weenie would whip up a typedef
  34. and do it all with subroutines, providng a portability package that
  35. used structures for strict compliance, and long long for speed where
  36. it is supported.  However, since you can get compilers that support
  37. long long, I'd have to say that I've got better ways to spend my
  38. time).
  39.  
  40. There are other issues besides naturalness.  Here are a few
  41. that seem to matter to various (different) people:
  42.  
  43. * Fortran compatibility.  Fortran 77 (yeah, I know that '90 is
  44. different) mandates that
  45.  
  46.     sizeof(INTEGER) = sizeof(REAL) = sizeof(DOUBLE PRECISION)/2.
  47.  
  48. A corollary of this is that there had better be a 32-bit integer data
  49. type in C, unless your hardware implements quad-word floating point.
  50.  
  51. * Common descriptions of data structures.  On almost all machines in
  52. the world (PC, Mac, 32-bit workstations) char, short, and long have
  53. the same size, though "int" floats.  In theory, clean coding avoids
  54. this problem.  Theory and practice diverge somewhat, unfortunately.
  55. Even so, this doesn't solve endianness problems.
  56.  
  57. * (strict) Standard compliance.  This means that (for instance) adding
  58. new type names is not allowed (whether "long long" or "__int32"), and
  59. that "int" cannot be larger than "long".  A more relaxed notion of
  60. compliance (defined in the standard) allows the introduction of new
  61. type names provided that they take certain forms ("long long" or
  62. "__int32" are both admissable).
  63.  
  64. * The naturalness argument reappears when people who "know" that the
  65. underlying machine is a 64-bit machine get their arithmetic truncated
  66. accidentally to 32-bits in some intermediate step, and are unhappy
  67. about it.  It certainly doesn't help speed to force the truncation,
  68. though optimizer writers will do their best to hide the cost.
  69.  
  70. My opinion on what is the right decision has changed sufficiently many
  71. times that it would probably be stupid to state it publicly, because I
  72. might well find myself arguing with myself (which happens often enough
  73. as is, but it's much less embarrassing in private).
  74.  
  75. David Chase
  76. Sun
  77.