[M3devel] <*LAZYALIGN*>
Rodney M. Bates
rodney.bates at wichita.edu
Sun Feb 24 20:59:30 CET 2008
Ahh, I get it. This will be much simpler than I thought.
Darko wrote:
> What I meant to say below is that unpacked structures are aligned
> according to the normal rules under Darwin. The problem is that the
> packed alignment rules without the change are too restrictive.
>
> On 24/02/2008, at 4:31 AM, Rodney M. Bates wrote:
>
>> I guess I misunderstood. I had the idea from the quoted text below
>> that MAC OS X needed a mixture
>> of lazy and strict alignment. If every platform uses the same
>> alignment rules for all types of all
>> programs on the platform, then the alignment rule property can just
>> be made an additional field of
>> the RTPacking.T.
>>
>> This is much easier to do without compatibility problems, because
>> this value is encoded in bits
>> in a 32-bit word in pickle headers, with unused bits that are now
>> ignored. The alignment strategy
>> could just be in another bit.
>>
>>
>> From a post on 2-11:
>> ---------------------------------------------------------------------------------------------------------
>>
>> That's not quite right. Certain Mac API structures need to be
>> aligned to Motorola 68K alignment for historical reasons. All other
>> structures should use normal alignment to be compatible with C and
>> Unix interfaces. The alignment change was implemented to be
>> supported only in packed structures as a natural and intuitive way
>> to "force" alignment. You could view it as a bug fix to overly
>> restrictive alignment rules in packed structures.
>>
>>
>> On 12/02/2008, at 2:46 PM, Rodney M. Bates wrote:
>>
>> > It sounds like all that Mac OS X needs is for _all_ types in an entire
>> > program to use the liberal packing rules. Have I understood
>> correctly?
>> > I would have no grief over that.
>> ---------------------------------------------------------------------------------------------------------
>>
>>
>> Darko wrote:
>>
>>> The alignment rules are particular to a platform, not a type (at
>>> least after we get rid of the pragma), so is there no field where
>>> we can encode some information about the platform in the pickle
>>> header or something? Where is endian stored?
>>
>> --
>> -------------------------------------------------------------
>> Rodney M. Bates, retired assistant professor
>> Dept. of Computer Science, Wichita State University
>> Wichita, KS 67260-0083
>> 316-978-3922
>> rodney.bates at wichita.edu
>
>
>
--
-------------------------------------------------------------
Rodney M. Bates, retired assistant professor
Dept. of Computer Science, Wichita State University
Wichita, KS 67260-0083
316-978-3922
rodney.bates at wichita.edu
More information about the M3devel
mailing list