[M3devel] platform-independent packing/alignment?

Jay K jay.krell at cornell.edu
Mon Feb 1 08:41:04 CET 2010


Let's say I have:

 

 

TYPE FOO = RECORD a: LONGFLOAT; b: UINT32; END;

TYPE FOOA = ARRAY [0..1] OF FOO;

 

 

And I have a platform with max_align = 32 and a platform with max_align = 64.

One platform will make FOOA be 24 bytes, the other 32.

  One platform will pad out FOO to be align the 8 byte LONGFLOAT, one won't.

Can that pickle be read/written by the two platforms?

And how does the code know/detect the difference?

That is, if a platform changed from max_align = 32 to 64, would the pickle code work just

as well on the "same" platform as on the "different" platforms?

 

 

I very recently changed NT386 max_align from 32 to 64, and I believe

the remaining active platforms with max_align = 32 should also be 64.

It would "only" affect pickles with LONGINT or LONGFLOAT, as well

as "lining up" such structs with C.

 

 

Such alignment shold make us not need the extra "unaligned double" switch

on most platforms (some mystery still on some platforms) as well as

perhaps be needed for some atomic operations, esp. maybe on

LONGINT on 32bit x86.

 

 

 - Jay

 
> From: dragisha at m3w.org
> To: rodney_bates at lcwb.coop
> Date: Sun, 31 Jan 2010 22:14:47 +0100
> CC: m3devel at elegosoft.com
> Subject: Re: [M3devel] platform-independent packing/alignment?
> 
> I've not changed my code, that is for sure.... But now I am not sure
> some parent type (esp MUTEX here an there) was not changed... I'll take
> a look on this again sometime soon and report my findings.
> 
> Thanks for clues.
> 
> On Sun, 2010-01-31 at 14:00 -0600, Rodney M. Bates wrote:
> > 
> > Dragiša Durić wrote:
> > > I've asked this before, but didn't catch answer:
> > > 
> > > On Sun, 2010-01-31 at 12:21 +0000, Jay K wrote:
> > >> I suggest we can probably get by with platform-independent
> > >> packing/alignment settings.
> > > 
> > > Some time ago I've used pickles (CM3) to save some data... My program
> > > does not read that pickle anymore.... 
> > 
> > And you are certain your program that tries to read still contains
> > exact structurally equivalent types to all the types in the pickle?
> > 
> > > 
> > > Someone remembers moment when this incompatible changes were made? 
> -- 
> Dragiša Durić <dragisha at m3w.org>
> 
 		 	   		  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://m3lists.elegosoft.com/pipermail/m3devel/attachments/20100201/36b9c8c4/attachment-0001.html>


More information about the M3devel mailing list