On a Cortex-M, at reset the core reads two 32-bit words from the base of the vector table: the first word is the initial stack pointer value (loaded into MSP), and the second is the reset handler address (loaded into PC). Notably the very first vector entry is data, the initial SP, not code, which surprises people. On many MCUs address 0x0000_0000 is an alias whose target is selected by the BOOT configuration pins: it can map to main flash (normal operation, so the table at 0x0800_0000 is what's read), to the built-in system bootloader in ROM (for programming over UART/USB), or to SRAM. So "what's at address 0" depends on the boot configuration, but functionally the core always fetches the initial SP and reset vector from there and begins executing the reset handler, which then runs the startup code.
Embedded Systems Fundamentals · Interview question
What does the CPU read from address 0 at reset?
A strong answer
What a weak answer sounds like
You know the answer. Do you know what gets you dinged?
Pro breaks down the answer most candidates actually give to this question — and the specific reason an interviewer marks it down. It’s the difference between sounding correct and sounding senior, on all 472 questions.
From the lesson
The Memory Map
Why code lives at 0x08000000 and variables at 0x20000000: the Cortex-M address layout of flash, SRAM, and peripherals, and how stack and heap share the SRAM with no MMU to referee.