From: "Warren W. Gay VE3WWG" <ve3wwg@home.com>
Subject: Re: Hi byte and Lo Byte Question
Date: Fri, 24 Aug 2001 17:46:07 GMT
Date: 2001-08-24T17:46:07+00:00 [thread overview]
Message-ID: <3B8692DE.9000206@home.com> (raw)
In-Reply-To: 9m61gv$b8s$1@nh.pace.co.uk
Marin David Condic wrote:
> "Warren W. Gay VE3WWG" <ve3wwg@home.com> wrote in message
> news:3B867ECA.80502@home.com...
>
>>I see where you're going on the "efficiency" argument, but ignoring that
>>for a moment, what about a different approach..
>>
>>Someone could craft an Ada subset (declaration) language, that is
>>compiled by a small compiler (like a CORBA IDL compiler), and
>>generates a resulting package body and spec, in existing Ada95
>>terms to accomplish what you want.
>>
>>A better way might be to use ASIS with the necessary "code" added to
>>generate your packages (some commercial venture has probably already
>>done this at some point).
>
> I'd really hate to have to be running some sort of preprocessor just to get
> automatic creation of all the Unchecked_Conversions I might want. This would
> be more painful than simply creating the Unchecked_Conversion or declaring
> an overlay of a Stream_Element_Array on top of all the types I might want to
> convert.
I wasn't suggesting a pre-processor, although the "tool" could be used
that way. I was just suggesting a tool that took Ada declarations, and
did the grunt work for you (a one-shot deal). After that, you have the
option of processing any changes again, or maintaining it by hand.
I admit, this is not an elegant solution ;-)
> You aren't really extending the language per se. You're just adding another
> type/object attribute, so syntactically it remains the same. I believe
> implementations might have some latitude to create attributes like this and
> not be in violation of the standard, so it could be an extension without a
> language update.
>
>>Of course, the draw back to this approach is that you don't avoid the
>>data copying that would be required by the generated code. The advantage
>>however, would be to keep the language from growing in size. If you
>>look at:
>>
>> >>for X in My_Type'Raw_Data (My_Data)'Range loop
>> >> Some_Storage_Element := My_Type'Raw_Data (My_Data) (X) ;
>> >>end loop ;
>>
>>there is some data copying on a Some_Storage_Element basis anyway.
>
> But no motion of My_Data to some intermediate structure just to be able to
> treat it as bytes. The Some_Storage_Element part was just there to
> demonstrate something syntactically correct. The important part is the
> My_Type'Raw_Data (My_Data) (X) part. You can reference all the bytes of
> My_Data without having to do:
Yes, I understand your point.
> Another_Block_Of_Data := My_Unchecked_Conversion (My_Data) ;
...
>
>>Unless Ada0Y were to gain endian representation features, I think
>>a certain amount of copying (internal or external) would be
>>necessary anyway. But I have to admit, that a representation
>>clause for endianess would be extremely convenient. Then at least
>>the compiler can do it in the most effective manner for the
>>platform it was compiled on.
>>
>
> What's wrong with ARM 13.5.3 Bit Ordering and using "for X'Bit_Order use
> High_Order_First ;" and similar (Low_Order_First )? I'm pretty sure that
> should work and do what you want - never needed to mess with it myself -
> yet. (Day ain't over, yet!)
I had forgotten about that (and not used it yet). But I was under
the impression that it only affects the numbering of the bits -- not
the actual implementation of the "word". I'll have to review it again.
However, there are endian situations that cannot be described by
"for'Bit_Order". Thankfully they are rare on modern architectures.
--
Warren W. Gay VE3WWG
http://members.home.net/ve3wwg
next prev parent reply other threads:[~2001-08-24 17:46 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-08-22 14:48 Hi byte and Lo Byte Question mop
2001-08-22 15:56 ` Larry Kilgallen
2001-08-22 16:21 ` Ted Dennison
2001-08-22 23:11 ` Mark Johnson
2001-08-23 0:23 ` Darren New
2001-08-23 14:13 ` Mark Johnson
2001-08-23 17:15 ` Darren New
2001-08-24 0:00 ` Robert Dewar
2001-08-24 7:52 ` Martin Dowie
2001-08-23 14:43 ` Marin David Condic
2001-08-24 8:09 ` Peter Dulimov
2001-08-24 16:20 ` Warren W. Gay VE3WWG
2001-08-24 17:05 ` Marin David Condic
2001-08-24 17:46 ` Warren W. Gay VE3WWG [this message]
2001-08-25 7:15 ` Simon Wright
2001-08-27 16:33 ` Warren W. Gay VE3WWG
2001-08-23 1:26 ` DuckE
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox