ARM Cortex-M family is one of my favorite micro-controller architectures.

Instruction set: A radical shift

Instruction set in architectures ARMv6-M, ARMv7-M and ARMv7E-M are radically different than other versions of ARM architectures. The huge difference is, these architectures drop requirement of ARM instruction set altogether.

Thumb1 instruction set was not a complete ISA. It relies on ARM instruction set for certain functionality. Thumb2 lifted this limitation by making it a complete ISA. This allowed dropping ARM instruction mode.

This results in reduction in gate count and also incredible performance gain due to mixed 16 and 32 bit instructions over 16 bit Thumb1 instruction set.

Interrupt handling


No shadow registers


No execution modes


Program status registers


No coprocessors


Fixed memory map

To aid portability of code between different Cortex-M micro-controller across vendors, M-profile architectures (ARMv6-M, ARMv7-M, ARMv7E-M, etc) defines standard fixed memory map. More information can be found from this post.


  1. Fixed memory map