Thread Links Date Links
Thread Prev Thread Next Thread Index Date Prev Date Next Date Index

Re: Interchange formats (was: NaI's as decorated empty sets)



> Date: Tue, 15 Sep 2009 17:44:36 +0200
> From: Vincent Lefevre <vincent@xxxxxxxxxx>
> To: stds-1788@xxxxxxxxxxxxxxxxx
> Subject: Re: Interchange formats (was: NaI's as decorated empty sets)
> 
> On 2009-09-09 07:34:00 -0700, Dan Zuras Intervals wrote:
> > 	The issue of endian-ness was still up in the air in 1985.
> > 	There is mention of it in the 754 document (I forget just
> > 	where) but I believe it was placed outside the scope of
> > 	the document onto a memory standard.  I seem to remember
> > 	it being 1596.5 but I can't be sure after all these years.
> 
> I don't think that a memory standard. If a datum fits on several
> words (such a binary64 on 32-bit machines), there are still two
> possibilities to order the words. This particular case led to
> 3 existing formats in memory for binary64.

	It is a data format standard.  By now, many of the
	formats described (Cray floating-point, for example)
	are obsolete but issues of byte order were dealt with.

> 
> Also, what about internal padding bytes for alignment purpose on
> specific machines?

	This was not an issue for the basic datatypes defined
	in 1985 as they were in 32 & 64 bit widths.

	But the 80-bit double extended that Intel chose to
	define in the optional types had to deal with this.

	Now, while byte ordering was not specifically called
	out in 1985, the BIT ordering was specified.  Thus,
	in an 80-bit type, bits 64 thru 79 would have to be
	contiguous with bits 0 thru 63 (numbered from the
	sign bit) with bits 63 & 64 'next to one another'.

	So whatever byte ordering accomplished that would
	have been acceptable.

	As for padding, that could not get between bits 63 &
	64 but other than that was not a part of 754-1985.

	Indeed, Intel has changed their approach to this over
	the years from machine to machine sometimes with 80-bit
	types contiguous in memory, sometimes contained within
	a 96-bit aligned block, & even within a 128-bit aligned
	block.

	There was even an example in the early years of an
	80-bit register being spilled to a 64-bit memory type
	with disastrous results that have not been repeated
	since.

> 
> -- 
> Vincent Lefèvre <vincent@xxxxxxxxxx> - Web: <http://www.vinc17.org/>
> 100% accessible validated (X)HTML - Blog: <http://www.vinc17.org/blog/>
> Work: CR INRIA - computer arithmetic / Arénaire project (LIP, ENS-Lyon)

	Yours,

				Dan