Consider the following code:
============================
char buf[]={1,2,3,4,5,6,7,8};
int *ip, x[4];
for (i=0; i<4; i++)
{
ip = (int *)&buf[i];
x[4] = *ip;
}
=============================
The Keil compiler compiles this without warning, but does not produce
the expected (for me) result in x. The problem is that Keil uses the
LDR instruction to effect the transfer and this is valid only on 4
byte boundaries.
GCC compiles but does give a non-aligned access warning.
I believe that the compiler has enough information to use byte aligned
transfers, and should, or at least give a warning.
Anybody want to weigh in on this one.
Thanks in advance for your comments.
Dave SidlauskasMessage
For C Experts
2006-03-30 by dsidlauskas1
Attachments
- No local attachments were found for this message.