comp.lang.ada
 help / color / mirror / Atom feed
From: dewar@cs.nyu.edu (Robert Dewar)
Subject: Re: Flags in Ada?
Date: 27 Oct 1994 09:29:42 -0400
Date: 1994-10-27T09:29:42-04:00	[thread overview]
Message-ID: <38oa06$7og@gnat.cs.nyu.edu> (raw)
In-Reply-To: 38nces$bdv@news.delphi.com

That's quite right, C does NOT specify how the bits are layed out. It lacks
anything equivalent to record rep clauses, and this can often be a real pain
when interfacing to external hardware. The bit fields of C correspond most
closely to Ada in which you have given the size of each component and then
you say pragma Pack for the record. There is no guarantee here either of
any specific ordering or layout, although simple cases, like 8 booleans in
a byte, should certainly work, but the ordering of the fields will still be
indeterminate.

What is true is that if you use pragma Convention (C,..) on such a type in
Ada 9X, then this packed record should be layed out the same way that C
would lay it out, whatever that is, and for some applications it is this
correspondence with the way some other language does things that is important,
not the specific layout. As I noted before, in GNAT, Ada and C by default
share the same convention for data layout, so pragma Converion (C, ...)
would do nothing.

Of course if you *do* need to specify the exact layout, then you are in
much better shape in Ada, because of the record representation clause.
The Bit_Order capability of Ada 9X further adds to the degree of control
that is the hands of an Ada programmer. This is one of the respects in 
which people who make the common assumption that C is somehow inherently
better than Ada for low level systems stuff are quite wrong, in this
particular area, Ada has much stronger tools than C. Of course you need
a decent Ada compiler that implements all these tools correctly, and
in the past, there have been some legitimate complaints in this area, but
the cure is to insist on better implementations, not to complain about
non-existent shortcomings in the language itself.




  reply	other threads:[~1994-10-27 13:29 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
1994-10-27  5:05 Flags in Ada? tmoran
1994-10-27 13:29 ` Robert Dewar [this message]
1994-10-27 17:15 ` Norman H. Cohen
1994-10-28  3:51   ` Robert Dewar
  -- strict thread matches above, loose matches on Subject: below --
1994-10-28  3:59 tmoran
1994-10-28 13:43 ` Robert Dewar
1994-10-31 14:19   ` Norman H. Cohen
1994-11-02 14:06     ` Mats Weber
1994-11-03 23:08       ` Robert Dewar
1994-11-03 11:26     ` Robert Dewar
1994-10-27  5:06 tmoran
1994-10-27 13:47 ` Robert Dewar
1994-10-28  2:41   ` Tucker Taft
1994-10-30 13:31     ` Robert Dewar
1994-10-25 16:22 tmoran
1994-10-25 10:36 Andre Spiegel
1994-10-25 10:07 ` David Emery
1994-10-25 16:19 ` Norman H. Cohen
1994-10-26  3:19   ` tmoran
1994-10-26  9:59     ` David Emery
1994-10-26 22:32       ` Robert Dewar
1994-10-27 13:24         ` Norman H. Cohen
1994-10-27 15:15         ` John Volan
1994-10-31  9:29         ` David Emery
1994-10-27 22:34       ` Henry G. Baker
1994-10-26 14:33     ` Robert Dewar
1994-10-26 17:43     ` Norman H. Cohen
1994-10-26 15:54   ` Andre Spiegel
1994-10-26  0:36 ` Dale Stanbrough
1994-10-26 11:01   ` Robert Dewar
1994-10-27  8:23 ` Henri Altarac
1994-10-27 23:00   ` Robert Dewar
1994-10-31  9:32     ` David Emery
replies disabled

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