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.
[color="#FF0000"]C code:[/color] unsigned long long *index; index = (unsigned long long *)0x20000102; // non-aligned(64-bits ) *index = 0x100;[color="#FF0000"]the Disassembly Code:[/color] LDR.W r8,[pc,#148] ADR r1,{pc}+2 LDM r1,{r0-r1} STRD r0,r1,[r8,#0] // hard-fault occur
[color="#FF0000"]C code:[/color] unsigned int *index; index = (unsigned int *)0x20000102; // non-aligned(32-bits ) *index = 0x100;[color="#FF0000"]the Disassembly Code:[/color] LDR.W r8,[pc,#148] MOVS r0,#0x100 STR r0,[r8,#0x00]
I know the Cortex-M3(ARM-V7) support non-align access,the align access of 32-bits and 64-bits is OK.but why 32-bits non-align can pass,and 64-bits non-Align can't? where is the difference of word and double-words access ?