Re: Architectures with strict alignment?
- From: Mike Meyer <mwm-keyword-freebsdhackers2.e313df@xxxxxxxxx>
- Date: Sun, 30 Dec 2007 23:18:08 -0500
On Sun, 30 Dec 2007 20:37:18 +0100 Bernd Walter <ticso@xxxxxxxxxxxxxxxxxx> wrote:
On Sun, Dec 30, 2007 at 01:55:06PM -0500, Mike Meyer wrote:
On Sun, 30 Dec 2007 10:34:33 +0100 Bernd Walter <ticso@xxxxxxxxxxxxxxxxxx> wrote:Not in every case.
On Sat, Dec 29, 2007 at 11:37:27PM +0100, Dag-Erling Smørgrav wrote:
Wilko Bulte <wb@xxxxxxxxxxxxxxxxx> writes:
In the past the alpha port had it too.
No, it was optional and defaulted to off.
It was never optional, since no alpha CPU can do missaligned access
Alphas can fix missaligned access by software trap handlers in the same
way as most other strong alignment architectures can and we did this
for userland, but not in kernel.
Nevertheless it is horribly slow to do this, but was required since[...]
there was so many crappy software that days - fortunately this has
changed over time, although I still see aligment traps on new software
as well.
Sadly said we never implemented missaligment traps for x86 so
Ok, I'm a bit confused. Since you're talking about moving code from
the x86 to the alpha, I'm assuming you're talking about C code. Isn't
it the *compilers* job to enforce alignment issues, unless the
programmer specifically asks for byte-specific control of the layout
of a set of variables?
It is not unusual to read raw bytes from e.g. network and use
a struct pointer to it.
But in case of network data it may be missaligned and if the struct
contains anything else then bytes you may be doing missaligned accesses.
Actually, network data is the most common case where the programmer
has to ask for byte-specific control of the layout. As far as I know,
the proper way to do this is to declare the struct properly - with a
compiler-dependent request for packing - then read the data into
that. If you could be reading more than one type of struct into it,
then set up the appropriate unions for all of them. In either case,
the compiler should DTRT.
But it sounds like this people just read raw bytes, and then
disassembled them by hand, which I would say qualifies as "crappy
software."
Or are these the issue, and the problem is that people do that andNo - they just don't think about alignment when parsing data from random
then don't use the appropriate APIs to pull data from them, thus
causing you headaches?
source.
That seems to be common: if something doesn't matter on their
platform, programmers tend not to worry about it. I saw plenty of
evidence of that as Unix moved from 16 bit systems to 32 bit ones, and
again as it went to 64 bits (though not quite so bad).
Thanks,
<mike
--
Mike Meyer <mwm@xxxxxxxxx> http://www.mired.org/consulting.html
Independent Network/Unix/Perforce consultant, email for more information.
_______________________________________________
freebsd-hackers@xxxxxxxxxxx mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@xxxxxxxxxxx"
- Follow-Ups:
- Re: Architectures with strict alignment?
- From: Bernd Walter
- Re: Architectures with strict alignment?
- References:
- Architectures with strict alignment?
- From: Ivan Voras
- Re: Architectures with strict alignment?
- From: M. Warner Losh
- Re: Architectures with strict alignment?
- From: Wilko Bulte
- Re: Architectures with strict alignment?
- From: Dag-Erling Smørgrav
- Re: Architectures with strict alignment?
- From: Bernd Walter
- Re: Architectures with strict alignment?
- From: Mike Meyer
- Re: Architectures with strict alignment?
- From: Bernd Walter
- Architectures with strict alignment?
- Prev by Date: Re: BSD license compatible hash algorithm?
- Next by Date: Re: Architectures with strict alignment?
- Previous by thread: Re: Architectures with strict alignment?
- Next by thread: Re: Architectures with strict alignment?
- Index(es):