We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hi, experts,
When testing codes below on Cortex-M4F. It seems armcc(Keil) handles the unaligned memory access very well and the dword load is compiled into two LDR instructions. But gcc generates one single LDRD from the unaligned address which triggers unaligned mem fault. Could gcc behave like armcc and use two LDR instead of one LDRD when it's unaligned?
for (i = 0; i < 4; i++) { address = 0x20001000 + i;
bword = *(uint8_t *)address; hword = *(uint16_t *)(address+1); word = *(uint32_t *)address; dword = *(uint64_t *)(address+2);
sum += bword + hword + word + dword; }
Thanks.
Best regards.