> > Almost certainly not. As far as I'm concerned arm-elf is obsolete, and in
> > maintenance only mode. You should be using arm-eabi.
> 
> I'm possibly (probably?) wrong, but as far as I know, it forces alignment
> of 64-bit datum (namely, doubles and long longs) to 8 byte boundaries,
> which does not make sense on small 32-bit cores with 32-bit buses and no
> caches (e.g. practically all ARM7TDMI based chips). Memory is a scarce
> resource on those and wasting bytes for alignment with no performance
> benefit is something that makes arm-eabi less attractive. Also, as far as
> I know passing such datums to functions might cause some headache due to
> the 64-bit datums being even-register aligned when passing them to
> functions, effectively forcing arguments to be passed on the stack
> unnecessarily (memory access is rather expensive on a cache-less
> ARM7TDMI). If you have to write assembly routines that take long long or
> double arguments among other types, that forces you to shuffle registers
> and fetch data from the stack. You lose code space, data space and CPU
> cycles with absolutely nothing in return.

Meh. Badly written code on antique hardware.
I realise this sounds harsh, but in all seriousness if you take a bit of care 
(and common sense) you should get the alignment for free in pretty much all 
cases, and it can make a huge difference on ARMv5te cores.

If you're being really pedantic then old-abi targets tend to pad all 
structures to a word boundary. I'd expect this to have much more detrimental 
overall effect than alignment of doubleword quantities, which in my experience 
are pretty rare to start with.

Paul

Reply via email to