comp.lang.ada
 help / color / mirror / Atom feed
From: "Marin David Condic" <marin.condic.auntie.spam@pacemicro.com>
Subject: Re: RISC
Date: Fri, 16 Mar 2001 14:02:32 -0500
Date: 2001-03-16T19:02:55+00:00	[thread overview]
Message-ID: <98to0v$6d2$1@nh.pace.co.uk> (raw)
In-Reply-To: wccofv1r65n.fsf@world.std.com

"Robert A Duff" <bobduff@world.std.com> wrote in message
news:wccofv1r65n.fsf@world.std.com...
> Ada 83 said that compilers don't have to support rep clauses that can't
> be "handled simply by the underlying hardware".  It's not entirely clear
> what that means.
>
> Ada 95 has a whole lot of verbiage that amounts to more or less the same
> thing: the compiler has to support some minimal capabilities that we
> thought were "simple" or "reasonably efficient" on all machines.
>
What it means is that the compiler is free to say "Sexual Penetration Upon
You!" whenever it feels like it. :-) An interesting clause I'd like to write
into the contracts *I* have to live by! :-)

I can live with most of Ada's representation limitations and most of the
time don't really care. There just needs to be *some* mechanism for me to
say "On the machine I'm targeting, the following layout of bits makes
sense - so just do what I tell you to do..."

I could deal with restrictions on such represented objects *after* I get the
layout I asked for, provided that at minimum, I can assign to/from the
object and its sub-fields. (Records or arrays are where I care about this.
Most other things just don't matter that much or the compilers that are out
there don't seem to puke on the representations as long as they aren't
contradictory.).

> If I were designing a language from scratch, I think I would require
> much more, including bit fields oddly aligned, and crossing word
> boundaries and so forth.
>
Yea Verily And For Sooth! So long as we are going to have to deal with
hardware designed by hardware engineers (instead of compiler writers) or
communicate with data streams that come from places not programmed in Ada,
*someone* is going to create data that needs really bizarre representations.
Ada needs to be able to connect to that data - and most of the time it does.

> I don't think the "underlying hardware" is really the issue, especially
> in this networked era, the piece of hardware you're trying to mimic
> might be a different computer, or some weird peripheral device.
>
From a practical perspective, I don't think it is that much of an issue. In
theory, someone might one day (again) make a machine that deals with sixbit
data. What is the likelihood there will be a huge demand for Ada compilers
for such a machine? Most machines these days are byte oriented. You've got
to deal with byte sex, but beyond that you can pretty much count on hardware
having some sort of support for byte sized data. It shouldn't be that tough
to map most rep clauses onto that sort of machine.

> Tucker's right: these things are hard to implement efficiently.  But I
> think it's worth it.  I really think the usefulness of Ada's rep clauses
> is seriously damaged by their lack of portability.  If I ran the circus,
> all compilers would support exactly the same record layouts.
>
I'll accept the efficiency argument and offer to give up some usages of the
data if that helps. Maybe Ada was overly-ambitious in this area and creating
some alternative mechanisms that don't have to satisfy all the possible
demands might make life easier.


> There are also a lot of things that rep clauses just can't express.  Eg,
> TCP/IP protocols often have data structures defined like "a count byte,
> followed by an array of sub-records" where the count gives the number of
> sub-records, or the number of bytes including (or not including) the
> count byte itself.  I would like to have a language that could describe
> that sort of thing at a reasonably high level.
>
Yes - this would be *very* nice! There are often in data streams things of
uncertain quantity which become very hard to represent in the usual Ada
structures. You get things like "This16 bit word will tell you how many
doohickies will follow...." and it will be surrounded by fixed data. It
doesn't map well to records - but maybe some other structure could be
created to handle it. Typically, you'll end up "rolling-your-own" by
building some kind of dynamic data structure to hold these things. You
construct the data structure as you read the data in. Not that hard to do,
but it would be *really* nice to describe one of these things at a high
level and just have all that done for you by the compiler.

There would be representation issues here as well, but I think that if the
operations on the structure are limited to assignments, it may not be that
hard to handle. I'm not at all sure what sort of language features would be
needed to support this. I'd be interested in hearing any ideas you had on
it.

MDC


--
Marin David Condic
Senior Software Engineer
Pace Micro Technology Americas    www.pacemicro.com
Enabling the digital revolution
e-Mail:    marin.condic@pacemicro.com
Web:      http://www.mcondic.com/





  reply	other threads:[~2001-03-16 19:02 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                     ` RISC Martin Dowie
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                 ` Marin David Condic [this message]
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