A jump via an indirect address, i.e. the jump instruction contains the address of a memory location that contains the address of the next instruction to execute. The location containing the address to jump to is sometimes called a vector. Indirect jumps make normal code hard to understand because the jump target is a run-time property of the program that depends on the execution history. They are useful for, e.g. allowing user code to replace operating system code or setting up event handlers.