My understanding of interrupts is that they're set in code to signal the processor when an event occurs. When an interrupt happens, the processor pauses its current task, jumps to the interrupt service routine (ISR), handles the event, and then returns to the main function where it left off. I'm curious about how and where the processor stores the ongoing task before jumping to the ISR. Can someone explain this process for any controllers like 8051, PIC, or ARM?