Handling interrupts in assembly language

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).

When an interrupt (also known as an exception) occurs, the processor responds by performing the following actions:

  • Pushing Registers R0-R3, 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 ...

Get ARM® Cortex® M4 Cookbook now with the O’Reilly learning platform.

O’Reilly members experience live online training, plus books, videos, and digital content from nearly 200 publishers.