<br><br><div class="gmail_quote">On Tue, Apr 22, 2008 at 10:48 PM, Evan Laforge &lt;<a href="mailto:qdunkan@gmail.com">qdunkan@gmail.com</a>&gt; wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div><div></div><div class="Wj3C7c">&gt; On Tue, Apr 22, 2008 at 9:29 PM, Evan Laforge &lt;<a href="mailto:qdunkan@gmail.com">qdunkan@gmail.com</a>&gt; wrote:<br>
&gt; &gt; This uses hsc2hs. &nbsp;As far as I can tell, alignment is unused. &nbsp;I&#39;ve<br>
&gt; &gt; never had an error from using &#39;undefined&#39; there.<br>
&gt;<br>
&gt; Some architectures require all sorts of wacky alignments. E.g. floats may<br>
&gt; need to be 4 byte aligned, so it&#39;s very important that you don&#39;t poke a<br>
&gt; single byte, and then a float, you need to pad with 3 empty bytes first<br>
&gt; (assuming the whole structure starts at a 4 byte alignment).<br>
<br>
</div></div>Does that mean that if ghc is on a sufficiently wacky architecture it<br>
will evaluate &quot;alignment&quot; and throw undefined? &nbsp;And if that&#39;s the case<br>
it would seem that you can&#39;t write &quot;alignment&quot; without introducing<br>
platform dependencies.<br>
<br>
I&#39;ve also heard that even on x86, if you don&#39;t have things aligned<br>
properly, structure access will be slow. &nbsp;But I&#39;d assume since I&#39;m<br>
poking into a C structure, either the C compiler will have taken care<br>
of alignment or its definition in C will have to include some manual<br>
padding, and so the haskell side doesn&#39;t have to worry about it at<br>
all.<br>
<br>
The FFI doc doesn&#39;t really talk about the alignment method at all, so<br>
I don&#39;t really understand how to write one or how it&#39;s used.<br>
</blockquote></div><br>Well I know that on the Xbox 360 (PowerPC with some extensions basically) alignment problems will sometimes cause slowness, and sometimes a crash depending on the data type. I can&#39;t remember which ones are which though, and usually the compiler takes care of it, but in cases such as this when you&#39;re manually poking bytes into a buffer, you do need to be very careful and make sure that anything actually using these values will either have the data in the correct alignment right away, or will copy it into an aligned variable before doing anything with it.<br clear="all">
<br>-- <br>Sebastian Sylvan<br>+44(0)7857-300802<br>UIN: 44640862