From: Bill Findlay <yaldnif.w@blueyonder.co.uk>
Subject: Re: GNAT for a PPC Mac OS X machine
Date: Mon, 18 Apr 2011 16:46:38 +0100
Date: 2011-04-18T16:46:38+01:00 [thread overview]
Message-ID: <C9D21B6E.9939%yaldnif.w@blueyonder.co.uk> (raw)
In-Reply-To: 9133l8FtmtU1@mid.individual.net
On 18/04/2011 16:28, in article 9133l8FtmtU1@mid.individual.net, "Niklas
Holsti" <niklas.holsti@tidorum.invalid> wrote:
> Bill Findlay wrote:
>
]>> The problem now is a portability issue.
>>
>> I have the declarations:
>>
>> type word is mod 2**48;
>>
>> ...
>>
>> type field_of_16_bits is mod 2**16;
>>
>> type Q_part is new field_of_16_bits;
>>
>> type Q_register is
>> record
>> C_part, I_part, M_part : Q_part;
>> end record;
>> for Q_register'Size use KDF9.word'Size;
>>
>> And this is fine in Intel. But on PPC, we get the error:
>>
>> 92. for Q_register'Size use word'Size;
>> |
>>>>> size for "Q_register" too small, minimum allowed is 64
>>
>> It's puzzling that the compiler refuses to give Q_register the size that it
>> happily gave to word. (The aspect clause is there to support unchecked
>> conversions between the word and Q_register types.)
>
> Bill, even if you get the Size clause to work, I hope your code does not
> rely on the Q_register components C_part, I_part, M_part being
> Unchecked_Converted to or from some well-known bit positions within the
> "word" value, as that would unportable.
I did not give the complete declaration, which is:
type Q_register is
record
C_part, I_part, M_part : KDF9.Q_part;
end record;
for Q_register'Size use KDF9.word'Size;
for Q_register'Bit_Order use Low_Order_First;
for Q_register use
record
C_part at 0 range 32 .. 47;
I_part at 0 range 16 .. 31;
M_part at 0 range 0 .. 15;
end record;
> If you only intend to use the "word" as an opaque container for a
> Q_register value, and never access the integer value of the whole "word"
> or particular bits of the "word", Unchecked_Conversion is ok.
Yes, but I need to make those integer properties OK as well.
I hoped that the declarations above would achieve this portably
(they work perfectly in the x86_64 and x86_32 versions).
> Otherwise it would be better to use shifting and masking operations to
> convert between the Q_register type and the word type; then you would
> know exactly which bits in the "word" contain which parts of the Q_register.
I hope to get the compiler to do that busy work for me. 8-)
> Apologies if my comment is obvious to you. No offence meant.
None taken. All comment is welcome.
--
Bill Findlay
with blueyonder.co.uk;
use surname & forename;
next prev parent reply other threads:[~2011-04-18 15:46 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2011-04-17 14:02 GNAT for a PPC Mac OS X machine Bill Findlay
2011-04-17 14:43 ` Simon Wright
2011-04-17 18:47 ` Bill Findlay
2011-04-18 1:50 ` Bill Findlay
2011-04-18 9:30 ` Simon Wright
2011-04-18 14:31 ` Bill Findlay
2011-04-18 15:28 ` Niklas Holsti
2011-04-18 15:46 ` Bill Findlay [this message]
2011-04-18 17:08 ` Niklas Holsti
2011-04-19 3:07 ` Bill Findlay
2011-04-18 15:52 ` Georg Bauhaus
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox