<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'>There is a proposal in here..here is a variation of it..<BR> <BR> <BR>Allow packing of records tightly on all targets.<BR>All targets get the same layout (modulo word size), the same things can compile successfully.<BR> Remove the caveat here that certain code will only compile for certain targets.<BR>If Allow_packed_byte_aligned is false, and there is an unaligned read/write, there are a few choices.<BR>m3front could transform into multiple inlined read/writes byte-wise taking the value apart of putting it back together.<BR>Or m3front could issue function calls. The C implementation could be #ifdefed such<BR>that amd64/x86 just do the read/write, albeit still with a function call.<BR> <BR> <BR>C backend could set allow_packed_byte_aligned the same always.<BR>In that case, the functions would be output into the file and inlined or macroed.<BR> <BR> <BR>A warning might be issued about the lack of atomicity.<BR> <BR> <BR>Heck, let's invent a feature...a pragma could be allowed on integral/floating point<BR>values as to endianness and compiler could output the byte swaps for you.<BR> <BR> <BR>The endianness could actually be some sort of runtime expression.<BR>That's how some formats work -- they get written native, with an indicator as to which that is,<BR>and swapped if necessary upon reads, and maybe swapped back for writes.<BR> <BR> <BR>You know -- if you really want a powerful system for efficient binary persistance..<BR> <BR> <BR>Or just leave it alone.<BR> <BR> <BR>?<BR> <BR> - Jay<br><br> <BR><div><hr id="stopSpelling">From: jay.krell@cornell.edu<br>To: hendrik@topoi.pooq.com; m3devel@elegosoft.com<br>Date: Tue, 22 Sep 2015 00:15:05 +0000<br>Subject: Re: [M3devel] Target.Allow_packed_byte_aligned<br><br>

<style><!--
.ExternalClass .ecxhmmessage P {
padding:0px;
}

.ExternalClass body.ecxhmmessage {
font-size:12pt;
font-family:Calibri;
}

--></style>
<div dir="ltr">Right -- I had what I think is the same idea -- I can build the n bootstrap archives, compare them, and verify where they are the same and where they are different, and then end up with fewer archives, maybe 6, maybe 2.<div><br></div><div>For that matter, I guess I should get this stuff to work in the C backend --- providing the #pragma pack(1) or whatever gcc/clang equivalent.</div><div><br></div><div> - Jay<br><br><br><br><div>> Date: Mon, 21 Sep 2015 16:25:49 -0400<br>> From: hendrik@topoi.pooq.com<br>> To: m3devel@elegosoft.com<br>> Subject: Re: [M3devel] Target.Allow_packed_byte_aligned<br>> <br>> On Mon, Sep 21, 2015 at 04:37:18PM +0000, Jay K wrote:<br>> > Also -- if anyone has a proposal that would allow Allow_packed_byte_aligned to always be true, that would also fit my agenda. I don't care true or false, I just want it the same across all targets.<br>> > In particular, on IA64/NT you can say stuff like:  #pragma pack(1)   struct   {   char a;   __unaligned int b;  } A;  A.b  <br>> > and you do get a 5 byte struct and b is at offset 1.The generated code will read b with multiple reads of bytes or shorts and reassemble the 4 byte integer.<br>> > Perhaps m3front can behave similarly?For all targets?<br>> > But for now I'll put it back and later when I generate bootstraps I'll see if they are equal, i.e. contain no packed types.<br>> >  - Jay<br>> <br>> The fancy packing should remain in the language, for backward <br>> compatibility if nothing else.  modula 3 is, after all, a systems <br>> language.<br>> <br>> But is likely no need to worry it in the bootstrap.<br>> <br>> If the bootstrap doesn't use it, it will still work portably as a <br>> bootstrap, no matter how machine-dependent fancy packing happens to be.<br>> <br>> -- hendrik<br>> _______________________________________________<br>> M3devel mailing list<br>> M3devel@elegosoft.com<br>> https://mail.elegosoft.com/cgi-bin/mailman/listinfo/m3devel<br></div></div>                                           </div>
<br>_______________________________________________
M3devel mailing list
M3devel@elegosoft.com
https://mail.elegosoft.com/cgi-bin/mailman/listinfo/m3devel</div>                                           </div></body>
</html>