comp.lang.ada
 help / color / mirror / Atom feed
From: "Martin Dowie" <martin.dowie@baesystems.com>
Subject: Re: RISC
Date: Tue, 20 Mar 2001 18:09:59 -0000
Date: 2001-03-20T18:09:59+00:00	[thread overview]
Message-ID: <3ab79ade$1@pull.gecm.com> (raw)
In-Reply-To: 997pq4$i35$1@nh.pace.co.uk

> Do you mean unchecked conversion? That works, but it forces you to move
the
> data twice just to satisfy language rules & may be too inefficient for
some
> apps. Its not A Bad Thing in my estimation, but I'd rather not have to.

No, I really meant checked conversions. We have a whole suite of generics
that take in enumerations and constant arrays of integers (different
subprograms
for different sizes) and provide x<->y conversions.

For arrays of packed booleans we have subprograms that take in 8/16/32
booleans and do the modulo arithmatic. Not exactly efficient, but they seem
to
be highly portable. We also provide a endian_convert a parameter (defaulted
to false). Most of our data does fall on natural word boundaries anyway
(just
not all of them) so the really inefficient routines are hardly ever used. In
most
systems the i/o is a fairly trivial percentage of the %cpu-time and if we
need
to make any optimisations then there is usually a better candidate after a
bit
of analysis.

> Well, that's fine for everything used internal to the system. The moment
> data enters/leaves the system from/to some other source, you *really* want
> to guarantee the representation is what is expected. How would you do this
> without representation clauses?

As above :-)

> You'd have to check with a language lawyer. My impression is that this is
> what the attribute is for. Go ahead and declare a stream of bytes for the
> I/O part to work. Once you get the data, you reference an overlaid record
to
> pull the data apart. I think the 'Valid attribute should force a check of
> the data "assigned" to the record. (Probably works with
Unchecked_Conversion
> as well...) Of course, you just do all this stuff backwards to handle
> output.

Any lawyers out there?


> I don't think overlays were ever not "guaranteed to work" in Ada83 - at
> least no more or less so than in Ada95. (You may have cases where the
> compiler or linker pukes on you. I've had this happen attempting to
overlay
> things from different contexts.) They were/are considered to be "A Bad
> Thing" because of the inherent lack of safety involved. (Much like the use
> of gotos is frowned upon, but they are still supported.) It is recognized
> that overlays can provide an elegant and effective solution to a number of
> problems (such as this one!) if they are used carefully and judiciously.
The
> language attempts to discourage their use because programmers will, like
> most normal people, abuse the privilege if left unrestrained.

RM83, 13.5.something
"Address clauses should not be used to achieve overlays of objects or
 overlays of program units. Nor should a given interrupt be linked to more
 than one entry. Any program using address clauses to achieve such
effects is erroneous."

But I've yet to find anything as explicit about this in RM95 :-(


> I think the ARM probably says something about programs relying on overlays
> being "erroneous" or some other carefully defined term that basically
means
> "it may work but all bets are off from a language lawyer's perspective."
> This is probably because there is no good universal way of defining
behavior
> across all hardware and compiler implementations.
>
> So go ahead and use overlays, but realize you're operating without a net.

I may start toying with overlays if this 'Valid thang works... cheers.






  parent reply	other threads:[~2001-03-20 18:09 UTC|newest]

Thread overview: 82+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2001-03-14 20:23 RISC chris.danx
2001-03-14 21:57 ` RISC Tucker Taft
2001-03-14 22:36   ` RISC chris.danx
2001-03-14 23:03     ` RISC Fraser Wilson
2001-03-15  1:30       ` RISC Corey Ashford
2001-03-15  9:19       ` RISC chris.danx
2001-03-15 12:37 ` RISC chris.danx
2001-03-15 13:03   ` RISC Tarjei T. Jensen
2001-03-15 18:29     ` RISC Robert A Duff
2001-03-15 14:40   ` RISC Ted Dennison
2001-03-15 14:49     ` RISC Robert A Duff
2001-03-15 17:37       ` RISC Marin David Condic
2001-03-15 18:28         ` RISC Robert A Duff
2001-03-15 19:16           ` RISC Marin David Condic
2001-03-16  8:44             ` RISC Martin Dowie
2001-03-16 14:40               ` RISC Marin David Condic
2001-03-20 10:17                 ` RISC Martin Dowie
2001-03-20 14:34                   ` RISC Marin David Condic
2001-03-20 15:45                     ` RISC Ted Dennison
2001-03-20 16:39                       ` RISC Robert A Duff
2001-03-20 18:10                       ` RISC Martin Dowie
2001-03-20 18:56                         ` RISC Ted Dennison
2001-03-22  9:16                       ` RISC - largish (code listed) Martin Dowie
2001-03-22  9:34                         ` Martin Dowie
2001-03-20 18:09                     ` Martin Dowie [this message]
2001-03-20 20:00                       ` RISC Marin David Condic
2001-03-20 22:30                         ` RISC Robert A Duff
2001-03-20 22:48                           ` RISC Ted Dennison
2001-03-20 23:10                           ` RISC Marin David Condic
2001-03-21  0:18                             ` RISC Robert A Duff
2001-03-21 14:31                               ` RISC Marin David Condic
2001-03-21 16:47                                 ` RISC Ted Dennison
2001-03-21 17:36                                   ` RISC Marin David Condic
2001-03-16 15:09             ` RISC Tucker Taft
2001-03-16 17:10               ` RISC Robert A Duff
2001-03-16 19:02                 ` RISC Marin David Condic
2001-03-16 20:58                   ` RISC Robert A Duff
2001-03-19 16:17                     ` RISC Marin David Condic
2001-03-19 16:45                       ` RISC Florian Weimer
2001-03-19 17:14                         ` RISC Marin David Condic
2001-03-19 17:33                           ` RISC Florian Weimer
2001-03-21  5:57                           ` RISC Lao Xiao Hai
2001-03-16 22:19                   ` RISC Ted Dennison
2001-03-16 19:13                 ` RISC Laurent Guerby
2001-03-16 20:30                   ` RISC Robert A Duff
2001-03-16 20:51                 ` RISC Ole-Hjalmar Kristensen
2001-03-16 18:33               ` RISC Marin David Condic
2001-03-16 20:45                 ` RISC Robert A Duff
2001-03-17  1:13                   ` RISC Randy Brukardt
2001-03-19 16:34                   ` RISC Marin David Condic
2001-03-19 17:49                     ` RISC Robert A Duff
2001-03-16 20:08 ` RISC chris.danx
2001-03-16 20:31   ` RISC Marin David Condic
2001-03-17 21:51     ` RISC Robert A Duff
2001-03-18  6:37       ` RISC Charles Hixson
2001-03-19 15:42         ` RISC Robert A Duff
2001-03-19 17:02         ` RISC Marin David Condic
2001-03-19 17:45           ` RISC Robert A Duff
2001-03-19 18:48             ` RISC Marin David Condic
2001-03-19 16:45       ` RISC Marin David Condic
2001-03-16 22:27 ` RISC chris.danx
2001-03-17  2:49   ` RISC Jeffrey Carter
2001-03-19  9:43   ` RISC Martin Dowie
2001-03-19 11:06     ` RISC chris.danx
2001-03-28 22:24     ` RISC chris.danx
2001-03-29  0:52       ` RISC Corey Ashford
2001-03-29 12:42       ` RISC John English
2001-03-22 20:11 ` RISC chris.danx
2001-03-22 20:51   ` RISC Marin David Condic
2001-03-22 21:02   ` RISC tmoran
2001-03-22 21:18     ` RISC chris.danx
2001-03-22 21:45   ` RISC Britt Snodgrass
2001-03-22 22:43     ` RISC chris.danx
2001-03-28 11:37   ` RISC chris.danx
  -- strict thread matches above, loose matches on Subject: below --
2001-03-16 23:25 RISC Beard, Frank
2001-03-17 11:39 ` RISC chris.danx
2001-03-29  3:12 RISC Beard, Frank
2001-03-29  7:28 ` RISC Martin Dowie
2001-03-29 12:38 ` RISC chris.danx
2001-03-29 19:07 ` RISC Chad R. Meiners
2001-03-29 17:52 RISC Beard, Frank
2001-03-30 17:31 RISC Kent Paul Dolan
replies disabled

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