<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'> > What mental model?<BR><div> > We have network order. Everything network is bit streams, from left to right, most</div><div> > significant bits/bytes.</div><div> </div><div> </div><div>Does any Modula-2 or Modula-3 or C compiler follow this model?</div><div>For a little endian target? I'm skeptical.</div><div>If it really is obvious, maybe we can make cm3 follow it?</div><div>Even if it breaks bitfield interop with C?</div><div>I would like to have m3front and M3C.m3 not have any target-endian dependentness.</div><div>I do believe it would break pickles, and some floating point code in m3core/libm3.</div><div>  ..because..you see.. I think there some mental model in C compiler writer's heads...that cm3 tries to adhere to, but which I might have diverged a bit from (look at the history of Target.m3).</div><div> </div><div> </div><div>In particular, standard C only allows bit fields to be of type "int" or "unsigned".</div><div>However it is a common extension to allow the type of a bitfield to also unsigned/signed char, short, long, and long long, and this does I believe affect the layout. Does that fit your mental model? In your model, must a 32bit bit field be aligned on a 32bit boundary?</div><div> </div><div>What does this look like:</div><div> </div><div>struct {</div><div>  unsigned a : 1;</div><div>  unsigned b : 32;</div><div>};</div><div>?</div><div> </div><div> </div><div> - Jay<br> </div><div><div id="SkyDrivePlaceholder"></div><hr id="stopSpelling">From: dragisha@m3w.org<br>Date: Fri, 24 Aug 2012 21:53:44 +0200<br>To: mika@async.caltech.edu<br>CC: m3devel@elegosoft.com<br>Subject: Re: [M3devel] Modula-3 bitfields<br><br>What you are proposing is to do a compiler-level job with a library. Just because such a library exists does not mean it invalidates every other approach. And we are talking about one of most complicated pieces of Modula-3 system, comparable in complexity with compiler. Of course, there are other approaches too, like some kind of interface language, to be processed into Modula-3 source code by cm3 build system.<div><div><br></div><div>Your latest example is good illustration for my proposal too. Another simple example to show a need for exact bit packing layout method. Thank you!</div><div><br></div><div><div>
<span style="color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; border-collapse: separate; orphans: 2; widows: 2;" class="ecxApple-style-span"><span style="color: rgb(0, 0, 0); text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; border-collapse: separate; orphans: 2; widows: 2;" class="ecxApple-style-span"><div style="word-wrap: break-word;"><div>--</div><div>Divided by a common language</div><div><br></div><div>Dragiša Durić</div><div><a href="mailto:dragisha@m3w.org">dragisha@m3w.org</a></div><div><br></div></div></span><br class="ecxApple-interchange-newline"></span><br class="ecxApple-interchange-newline">
</div>
<br><div><div>On Aug 24, 2012, at 9:28 PM, Mika Nystrom wrote:</div><br class="ecxApple-interchange-newline"><blockquote><span style="text-transform: none; text-indent: 0px; letter-spacing: normal; word-spacing: 0px; white-space: normal; border-collapse: separate; orphans: 2; widows: 2;" class="ecxApple-style-span"><br>And what does that mean, exactly?  No gaps allowed?  What does it<br>mean, in particular, on a little-endian machine?<br><br>What about ARRAY [0..1] OF BITS 31 FOR [0..16_8fffffff] ?<br><br>What I am proposing isn't particularly difficult, it's not unportable,<br>either.  And much more powerful than any sets of pragmas.  Not tied to<br>your one architecture.<br><br>    Mika</span></blockquote></div><br></div></div></div>                                           </div></body>
</html>