ARM programmer’s model and assembler Embedded Systems Programming
Memory Formats The ARM views memory as a linear collection of bytes numbered upwards from zero. Bytes 0 to 3 hold the first stored word, bytes 4 to 7 the second and so on. The ARM can treat words in memory as being stored either in Big Endian or Little Endian format. A word is 32 bits Addresses are 32 bits
Little endian addresses of bytes within words In little endian format, the lowest numbered byte in a word is considered the word’s least significant byte, and the highest numbered byte the most significant. Byte 0 of the memory system is therefore connected to data lines 7 through 0.
Big endian addresses of bytes within words In big endian format, the most significant byte of a word is stored at the lowest numbered byte and the least significant byte at the highest numbered byte. Byte 0 of the memory system is therefore connected to data lines 31 through 24.
ARM processor modes
The ARM register set
Program Status Register format In user programs only the top 4 bits of the CPSR are relevant N - the result was negative Z - the result was zero C - the result produced a carry out V - the result generated an arithmetic overflow I, F – interrupt enable bits T – instruction set (Thumb/ARM)
The CPSR mode bits
Exception processing modes
ARM 7 internals
The ARM instruction set a) Data processing instructions b) Data transfer instructions c) Control flow & conditional execution d) Special instructions
Data processing instructions ALL operands are 32-bits wide and either: come from registers, or are literals (´immediate´ values ) specified in the instruction The result, if any, is 32-bits wide and goes into a register –except long multiplies generate 64-bit results All operand and result registers are specified independently