How many memory spaces are there in ARM microprocessors? Is there a separate memory space for program and constants? Are registers mapped into a memory space as in AVR microcontrollers? What is the maximum memory size for each memory space? What is the size of addressable cells of each memory space? How is the alignment problem handled?