comp.lang.ada
 help / color / mirror / Atom feed
From: Robert Dewar <robert_dewar@my-deja.com>
Subject: Re: Bit manipulation
Date: 2000/11/13
Date: 2000-11-13T00:00:00+00:00	[thread overview]
Message-ID: <8up1j4$uqe$1@nnrp1.deja.com> (raw)
In-Reply-To: slrn90vt78.l5.lutz@taranis.iks-jena.de

In article <slrn90vt78.l5.lutz@taranis.iks-jena.de>,
  lutz@iks-jena.de (Lutz Donnerhacke) wrote:


> GNAT can not compile it. Bit_Order can not be set.

That is incorrect, as of version 3.13, GNAT implements
the capability of setting Bit_Order in situations where
this makes sense, including this one.

> >Bit_Order confuses many people, since certainly it *sounds*
> >as though it might do what you expected, but most certainly
> >it does *not* do anything of the kind.
>
> Very bad. I would offer a perfect way to use the
> representation clauses for
> real world applications. But so they are nearly senseless.

Not at all! Setting Bit_Order is quite valuable for some
situations of endian independence. You are just confused
about the purpose and semantics of this capability. The
fact that it does not do what you want it to do does
not make it senseless!

A typical useful application is to specify the position of
bits within a single byte as 8 record componens in a manner
that is endian-independent.

> >In fact the solution above is doubly wrong, because the use
> >of unchecked
> >conversion ensures that nothing actually happens at all!
>
> Sure? The return statment (with was wrong, because .data was
> forgotten)
> would generate a endianess prefix on reading the memory
> location. This does the whole thing. (Using Alpha, Ia64, ...)

Not evan vaguely. Like many people you are confusing byte
endianness with bit order. I would recommend reading the
section in my book on Microprocessors on this subject which
is at least an attempt to sort this out. Note that a lot of
people, including the designers and documenters of the 68K
got confused on this issue.

> >In any case, read the GNAT documentation to understand what
the real
> >situation here is. The operable sentence from the GNAT
Reference Manual is
> >
> >  In the case where the non-standard value is specified, the
> >  effect is to renumber bits within each bit, but the
ordering
> >  of bytes is not affected.
> >
> >let alone ordering of bits!!!!
>
> We talk about bit ordering.


We do indeed! The Bit_Order attribute in Ada talks ONLY about
numbering of the bits, it does NOT provide a facility for
reversing bits AT ALL! So that is why you should read the
documentation carefully. Norman Cohen has also written a useful
piece on Bit_Order, it is in one of the relevant AI's. Perhaps
someone can give the reference.

By the way, we find that helping people through the porting
problems associated with switching endianness is a very common
activity in our support efforts.

One even has to wonder if the original questioner *really* wants
to do what he says he wants to do. In my experience, most people
who want to reverse bits, don't really want to, they are
confused in the same way that Lutz was confused into thinking
that endianness switching involves bit-reversal.

of course there are legitimate requirements for bit order
swaps in the communications area, but you have to wonder ....



Sent via Deja.com http://www.deja.com/
Before you buy.




  reply	other threads:[~2000-11-13  0:00 UTC|newest]

Thread overview: 71+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2000-11-07  0:00 Bit manipulation Sandro Binetti
2000-11-07  0:00 ` Larry Kilgallen
2000-11-07  0:00   ` John English
2000-11-08  0:00   ` gdemont
2000-11-08  0:00     ` Robert Dewar
2000-11-08  0:00       ` gdemont
2000-11-08  0:00         ` Larry Kilgallen
2000-11-09  4:50           ` Robert Dewar
2000-11-10  0:00             ` Lao Xiao Hai
2000-11-09  4:47         ` Robert Dewar
2000-11-09  0:00           ` gdemont
2000-11-08  0:00       ` Sandro Binetti
2000-11-08  0:00         ` Nicolas Brunot
2000-11-08  0:00         ` gdemont
2000-11-09  4:00           ` Ken Garlington
2000-11-09  0:00             ` Larry Kilgallen
2000-11-09  0:00               ` Ken Garlington
2000-11-08  0:00         ` Dale Stanbrough
2000-11-09  0:00           ` Sandro Binetti
2000-11-09  0:00             ` gdemont
2000-11-09  0:00             ` Ken Garlington
2000-11-10  0:00             ` Scott Ingram
2000-11-09  3:59         ` Ken Garlington
2000-11-09  4:52         ` Robert Dewar
2000-11-11  0:00       ` Redryder
2000-11-11  0:00         ` Jeff Carter
2000-11-11  0:00           ` Redryder
2000-11-12  2:07             ` Ken Garlington
2000-11-12  5:56             ` Jeff Carter
2000-11-12  0:00               ` Robert Dewar
2000-11-12  0:00                 ` tmoran
2000-11-13  0:00                   ` Robert Dewar
2000-11-14  0:00                     ` Marc A. Criley
2000-11-13  0:54                   ` Ken Garlington
2000-11-12  6:40               ` tmoran
2000-11-13  0:00         ` Lutz Donnerhacke
2000-11-13  0:00           ` Robert Dewar
2000-11-13  0:00             ` Lutz Donnerhacke
2000-11-13  0:00               ` Robert Dewar [this message]
2000-11-13  0:00                 ` Lutz Donnerhacke
2000-11-13  0:00                   ` Pat Rogers
2000-11-13  0:00                     ` Brian Rogoff
2000-11-13  0:00                       ` F. Britt Snodgrass
2000-11-15  0:00                         ` Lutz Donnerhacke
2000-11-13  0:00                       ` Pat Rogers
2000-11-14  0:00                       ` Georg Bauhaus
2000-11-15  0:00                         ` Lutz Donnerhacke
2000-11-14  0:00                   ` Martin Dowie
2000-11-15  0:00                     ` Lutz Donnerhacke
2000-11-20  0:00                 ` Randy Brukardt
2000-11-21  0:00                   ` Lutz Donnerhacke
2000-11-21  0:00                     ` Stephen Leake
2000-11-22  0:00                       ` Lutz Donnerhacke
2000-11-13  0:00           ` Robert Dewar
2000-11-13  0:00             ` Lutz Donnerhacke
2000-11-13  0:00               ` Robert Dewar
2000-11-13  0:00                 ` Lutz Donnerhacke
2000-11-08  7:18   ` Sandro Binetti
2000-11-07  0:00 ` gdemont
2000-11-08  7:22   ` Sandro Binetti
2000-11-10  7:24 ` Thank you all for your contribution ! Sandro Binetti
  -- strict thread matches above, loose matches on Subject: below --
2005-02-07 12:37 Bit manipulation Maurizio
2005-02-07 13:20 ` Martin Krischik
2005-02-07 15:32 ` Martin Dowie
2005-02-07 18:04   ` Martin Krischik
2005-02-08  0:32 ` Randy Brukardt
2005-02-08  3:11 ` Steve
2005-02-08 18:51   ` tmoran
1999-04-04  0:00 bit manipulation Jack Chow
1999-04-04  0:00 ` Matthew Heaney
1999-04-05  0:00 ` dennison
replies disabled

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox