reading legacy floppy disks

Steve Harvey sgh-Ja3L+HSX0kI at public.gmane.org
Sun Sep 10 21:01:54 UTC 2006


On Sun, Sep 10, 2006 at 12:29:37PM -0400, John Macdonald wrote:
> On Sun, Sep 10, 2006 at 10:57:25AM -0400, Seneca Cunningham wrote:
> > 
> > On 10-Sep-2006, at 04:09 :09, John Macdonald wrote:
> > 
> > >On Sat, Sep 09, 2006 at 11:33:58PM -0400, Christopher Browne wrote:
> > >>The sizes of char/short/int/long are not required to be any  
> > >>particular
> > >>size in the standard.  If memory serves, the relationship needs to
> > >>hold that:
> > >>
> > >> sizeof(char) <= sizeof(short) <= sizeof(int) <= sizeof(long)
> > >>
> > >>But having 8 bit ints *is* consistent with...
> > >>
> > >>   8 <= 8 <= 8 <= 16
> > >
> > >But it is not consistant with the other rule about the
> > >size of an int - an int has to have enough bits to
> > >hold a pointer.  For any machine with more than 256
> > >addressable units, an 8-bit int doesn't work.
> > 
> > What rule?  I've dealt with systems that are ILP32 and LP64 (which  
> > one is determined by compiler flags).  AIX is one of them, and if my  
> > recollections of porting are correct, Linux on AMD64 is another.  The  
> > assumption that many 32-bit developers seem to hold that an int is  
> > the same width as a pointer causes porting delays.
> 
> Sorry, I meant to write "rule" instead of rule.
> 
> It is not a real rule, but it was a programming practice for
> a long time.  Because the default type for a function is int,
> and int was "always" large enough to hold a pointer, people
> would not bother to specify the type of functions when they
> were just copying the results around.  K&R (original edition)
> warned about this practice ("a rather cavalier attitude toward
> copying pointers").
> 
> It meant that compiler designers were knowingly choosing to
> have portability problems if they used a smaller size for int
> than pointer.  So, it tended to be done only for cross-compilers
> that were targetting stand-alone device controllers that were
> not going to be used as general purpose computers (and for which
> porting existing programs was not such an important issue).
> 
  This was a major issue in porting System III Unix to the Honeywell
Level 6.  Storage was addressed as 16-bit words; if you needed a
char *, a 16-bit index was tacked onto the pointer making a grand
total of 48 bits.  Other pointers stayed at 32 bits, which, if
memory serves me correctly, was sizeof(long), with int being 16 bits.
--
The Toronto Linux Users Group.      Meetings: http://gtalug.org/
TLUG requests: Linux topics, No HTML, wrap text below 80 columns
How to UNSUBSCRIBE: http://gtalug.org/wini/Mailing_lists





More information about the Legacy mailing list