
On Tue, Apr 22, 2008 at 9:29 PM, Evan Laforge
wrote: This uses hsc2hs. As far as I can tell, alignment is unused. I've never had an error from using 'undefined' there.
Some architectures require all sorts of wacky alignments. E.g. floats may need to be 4 byte aligned, so it's very important that you don't poke a single byte, and then a float, you need to pad with 3 empty bytes first (assuming the whole structure starts at a 4 byte alignment).
Does that mean that if ghc is on a sufficiently wacky architecture it will evaluate "alignment" and throw undefined? And if that's the case it would seem that you can't write "alignment" without introducing platform dependencies. I've also heard that even on x86, if you don't have things aligned properly, structure access will be slow. But I'd assume since I'm poking into a C structure, either the C compiler will have taken care of alignment or its definition in C will have to include some manual padding, and so the haskell side doesn't have to worry about it at all. The FFI doc doesn't really talk about the alignment method at all, so I don't really understand how to write one or how it's used.