ARM Cortex interrupt handlers can be programmed completely in C, but programmers coding time-critical applications prefer to use assembler (some programmers claim, rather ambitiously, that their hand-crafted assembler programs run up to 30-times faster than compiler generated code, but I suspect that the actual figure is 2-3 times).
R12, link register (
LR), program counter (
PC), and program status (
PSR) onto the stack
Reading the address of the exception handler from the interrupt vector table
Updating the stack pointer, program status, link register, and program counter
The eight words pushed onto the stack are collectively known as the Stack Frame (illustrated later). These are referred to as caller-saved registers by the (AAPCS), and so the exception executes exactly as a C function. If the processor is in privileged...