An interrupt or exception is called precise if the saved processor state corresponds with the sequential model of program execution where one instruction execution ends before the next begins.
The saved state should fulfil the following conditions:
- All instructions preceding the instruction indicated by the saved program counter have been executed and have modified the processor state correctly.
- All instructions following the instruction indicated by the saved program counter are unexecuted and have not modified the processor state.
- If the interrupt is caused by an exception condition raised by an instruction in the program, the saved program counter points to the interrupted instruction.
- The interrupted instruction may or may not have been executed, depending on the definition of the architecture and the cause of the interrupt. Whichever is the case, the interrupted instruction has either ended execution or has not started.