Yahoo Groups archive

Lpc2000

Index last updated: 2026-04-28 23:31 UTC

Thread

data alignment isue

data alignment isue

2004-05-04 by Gus

Hello,

From my understanding, ARM chips don't raise exception when 
reading/writing unaligned address but it will give invalid results!
I have 1nt32 pointer and I am reading/writing data through it. How 
do I catch it if it is pointing to unaligned address?

If an exception is something that can be done, why it is not raising 
exception on my philips chips?


All the best,

Gus Issa

Re: data alignment isue

2004-05-07 by Frank Sergeant

"Gus" <gus_is_working@...> writes:

> From my understanding, ARM chips don't raise exception when 
> reading/writing unaligned address but it will give invalid results!
> I have 1nt32 pointer and I am reading/writing data through it. How 
> do I catch it if it is pointing to unaligned address?
 
> If an exception is something that can be done, why it is not raising 
> exception on my philips chips?
 
In case it helps, I notice that pp. 127-128 of _ARM Ssytom-on-chip
Architecture_ by Steve Furber mentions that loading a word from a
non-word-aligned address loads the word-aligned word which contains the
addressed byte, but rotated so the addressed byte is put into the LSByte
of the register.  Storing a word to a non-word-aligned address ignores
the 2 LSBits (thus using a word-aligned address).

To check that an address is word aligned, check to see that the two
LSBits are zero.  To leave a register alone if it is already word
aligned or to advance it to the next word aligned address if it is not
word aligned, you can add 3 to the register then force the 2 LSBits to
zero.

I would think that would be necessary only when reading an arbitrary
starting address or an arbitrary offset.  Otherwise, once you have a
word-aligned address, as long as you advance by 4 bytes, it should stay
word aligned.


-- 
Frank

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.