comp.lang.ada
 help / color / mirror / Atom feed
From: Robert Dewar <robert_dewar@my-deja.com>
Subject: Re: Help with Atomic_Components and whole array assignment
Date: Tue, 30 Jan 2001 18:26:20 GMT
Date: 2001-01-30T18:26:20+00:00	[thread overview]
Message-ID: <9570vu$fv0$1@nnrp1.deja.com> (raw)
In-Reply-To: 3A76E455.AABF2490@averstar.com

In article <3A76E455.AABF2490@averstar.com>,
  Tucker Taft <stt@averstar.com> wrote:
> I don't agree with Robert on this.  Have you tried writing it
> as a loop rather than an aggregate assignment.  I suspect
> that all Ada compilers would use separate assignments,
> including GNAT.

True enough

> In any case, I believe they should use separate assignments.

Yes, this article of faith has been discussed in a previous
message but I see nothing in the RM to justify this statement.

> > Package Machine_Code here we come...
>
> This is not necessarily the right conclusion in my view.
> Most device drivers are written without dropping into machine
> code these days.  Ada of all languages should not change
> that.

If specific instructions are required (as is often the case
with device drivers), then there is nothing in the C, or
Ada (or any other) standard that guarantees that a particular
instruction will be generated. If you are counting on this,
and it just happens that your compiler let's you get away
with it, you are writing implementation dependendent bogus
code, and I think this should be avoided.

The GNU/Linux kernel had endless problems from assumptions
of this kind, and finally they have all been replaced by
machine language insertions, to avoid the problems. What
happened in this case is that new improved and correct gcc
compilers blew the kernel out of the water by breaking these
undocumented assumptions.

The same can happen to you if you follow Tuck's advice. Note
that even from what Tuck claims, he specifically notes that
nothing in the RM requires a particular instruction to be
used. So for example, if you have a word variable, and
you read it and copy it somewhere else, there is nothing
to stop the compiler from using a floating-point instruction
for the purpose, even if what you want and need is an integer
load.



Sent via Deja.com
http://www.deja.com/



  reply	other threads:[~2001-01-30 18:26 UTC|newest]

Thread overview: 31+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-01-22 11:22 Help with Atomic_Components and whole array assignment r_c_chapman
2001-01-22 12:51 ` Stuart Palin
2001-01-22 14:16   ` mark_lundquist
2001-01-22 16:09     ` Pat Rogers
2001-01-22 16:29     ` Robert Dewar
2001-01-22 19:52       ` Mark Lundquist
2001-01-30 15:54       ` Tucker Taft
2001-01-30 18:20         ` Robert Dewar
2001-01-31  5:08           ` DuckE
2001-01-31  5:57             ` Robert Dewar
2001-02-01  3:31               ` DuckE
2001-02-02 21:38               ` Mark Lundquist
2001-02-02 23:08                 ` Robert Dewar
2001-02-03  1:39                 ` tmoran
2001-01-22 16:21 ` Robert Dewar
2001-01-22 16:39   ` r_c_chapman
2001-01-30 15:57     ` Tucker Taft
2001-01-30 18:26       ` Robert Dewar [this message]
2001-01-30 21:30         ` Simon Wright
2001-02-01  6:11           ` Robert Dewar
2001-02-06  0:32         ` Richard Kenner
2001-02-06  3:15           ` Robert Dewar
2001-01-31 10:09       ` Rod Chapman
2001-01-31 21:41         ` Tucker Taft
2001-02-01  5:33           ` Robert Dewar
2001-02-01  9:42           ` Rod Chapman
2001-02-01 18:10             ` Robert Dewar
2001-02-01 13:14           ` SPARK flow analysis (was Help with Atomic_Components and whole array assignment) Stuart Palin
2001-02-01 23:38           ` Help with Atomic_Components and whole array assignment Nick Roberts
2001-02-02  3:45             ` Robert Dewar
2001-02-07 21:40           ` Nick Williams
replies disabled

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