ramură indirectă _ _ _ _ _ _ _ cod mașină . În loc să specificați adresa următoarei instrucțiuni de executat , așa cum este obișnuit pentru salturile directe , aici argumentul specifică locația adresei.
În acest caz, un exemplu ar fi o instrucțiune de genul „salt indirect în registrul r1”, ceea ce înseamnă că următoarea instrucțiune care urmează să fie executată este la adresa stocată în registrul r1. Adresa de salt nu este cunoscută până când instrucțiunea nu este executată. Salturile indirecte pot depinde și de locația memoriei .
Săritura indirectă poate fi foarte utilă pentru ramificarea condiționată , în special pentru săriturile cu mai multe căi. De exemplu, pe baza datelor introduse în program, valoarea poate fi căutată în tabelul de salt al indicatorilor de cod pentru a procesa diferite opțiuni în funcție de valoarea datelor .
O valoare de date poate fi adăugată la o adresă de tabel și rezultatul stocat într-un registru. Se poate face un salt indirect pe baza valorii acestui registru, atribuind efectiv controlul programului codului corespunzator datelor introduse.
În mod similar, instrucțiunile de apel de subrutine pot fi indirecte, cu adresa subrutinei apelate specificată într-un registru sau locație de memorie.
SPARC : | jmpl %o7 |
MIPS : | jr $ra |
x86 : | jmp *%eax |
BRAT : | mov pc, r2 |
Itanium : | br.ret.sptk.few rp |
6502 : | jmp ($0DEA) |
65C816 : | jsr ($0DEA,X) |
Z80 : | jp (hl) |
Intel 8080 : | pchl |