On x86 processors it's usually only a speed penalty (or has anyone ever
seen the AC flag turned on?), on other processors you may even have to
workaround exceptions (i.e. bus errors), because the processor simply
refuses to read or write unaligned data.
It even is not guaranteed (or even common) that a misaligned access with
a processor that only can do aligned memory actions can be cured by an
exception.
That is why the compiler needs to create complex code for the
potentially misaligned elements of a packed record. All C compilers do
this and I am positive that FP does it, too. So no problem here (beyond
the additional cycles needed when working with packed records).
A real problem comes up if you manipulate a pointer to a (supposedly
aligned) multi-byte variable to make it point to an odd address. This
will make the program crash on certain processors (not PC not "big"
68Ks, but "small" 68 Ks.
-Michael
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel