I'm working with a freescale FRDM-MKL25Z4 development board, writing some minimal code. I find that the simulator and the development board seem to disagree on the behavior. also in my disassembly window I often get different disassembly for the same instruction.
memcpy: 0x00000292 B5B0 DCW 0xB5B0 << why isn't this a PUSH? 0x00000294 B089 DCW 0xB089 0x00000296 4613 DCW 0x4613 ... 0x000002DC BDB0 DCW 0xBDB0
memset: 0x000002DE B5B0 PUSH {r4-r5,r7,lr} <<why is it PUSH here? 0x000002E0 B088 SUB sp,sp,#0x20
any help would be appreciated.
Your stack alignment is screwed up, you can't use 0x20002FFF, it needs to be 0x20003000, it will decrement from there. A lot of linker scripts have this kind of broken definition.
Thanks that's very useful! I made the change.