indirekte gren _ _ _ _ _ _ _ maskinkode . I stedet for at specificere adressen på den næste instruktion til at udføre , som det er sædvanligt for direkte spring , specificerer argumentet her adressens placering.
I dette tilfælde ville et eksempel være en instruktion som 'indirekte hop i register r1', hvilket betyder, at den næste instruktion, der skal udføres, er på adressen gemt i register r1. Springadressen er ikke kendt, før instruktionen er udført. Indirekte spring kan også afhænge af hukommelsesplacering .
Indirekte spring kan være meget nyttigt til betinget forgrening , især for multi-path jumps. For eksempel, baseret på de data, der er indtastet i programmet, kan værdien slås op i springtabellen af kodepointere for at behandle forskellige muligheder afhængigt af værdien af dataene .
En dataværdi kan tilføjes til en tabeladresse og resultatet gemmes i et register. Et indirekte spring kan foretages baseret på værdien af dette register, hvilket effektivt tildeler programstyring til den kode, der svarer til de indtastede data.
Tilsvarende kan subrutineopkaldsinstruktioner være indirekte, med adressen på den kaldte subrutine specificeret i et register eller en hukommelsesplacering.
SPARC : | jmpl %o7 |
MIPS : | jr $ra |
x86 : | jmp *%eax |
ARM : | mov pc, r2 |
Itanium : | br.ret.sptk.few rp |
6502 : | jmp ($0DEA) |
65C816 : | jsr ($0DEA,X) |
Z80 : | jp (hl) |
Intel 8080 : | pchl |