[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