Cortex-M4 Core Registers

Goal: visualizing what happens to the Cortex-M4 core registers after reset


Here's what happens after the processor is reset:
  • General-purpose registers have unknown values in them
  • Stack pointer register is loaded with the value of the Initial SP value register located at 0x0000 (Vector Table)
  • Link register will have 0xFFFFFFFF
  • Program counter is loaded with the value of the Reset register located at 0x0004 (Vector Table)
    • In the case of STM32F4, Reset register contains the address of the Reset_Handler which is defined in startup_stm32f40xx.s
  • Reset_Handler performs microcontroller system setup, configures the system clock, eventually branches to __main (entry point of a program) in the C library. 
  • Vector Table is mapped to address 0 at reset (can be relocated in this range: 0x00000080 - 0x3FFFFF80)











































Summary of registers and their roles in the procedure call standard (AAPCS).