Nepřímý přechod

nepřímá větev _ _ _ _ _ _ _ strojový kód . Místo zadání adresy další instrukce k provedení , jak je obvyklé u přímých skoků , zde argument určuje umístění adresy.

V tomto případě by příkladem byla instrukce jako 'nepřímý skok v registru r1', což znamená, že další instrukce, která má být provedena, je na adrese uložené v registru r1. Adresa skoku není známa, dokud není instrukce provedena. Nepřímé skoky mohou také záviset na umístění paměti .

Nepřímé skákání může být velmi užitečné pro podmíněné větvení , zejména pro vícecestné skoky. Například na základě dat zadaných do programu lze hodnotu vyhledat v tabulce skoků ukazatelů kódu pro zpracování různých možností v závislosti na hodnotě dat .

K adrese tabulky lze přidat datovou hodnotu a výsledek uložit do registru. Na základě hodnoty tohoto registru lze provést nepřímý skok, který efektivně přiřadí řízení programu kódu odpovídajícímu zadávaným datům.

Podobně mohou být instrukce volání podprogramu nepřímé, s adresou volaného podprogramu specifikovanou v registru nebo paměťovém místě.

Příklady jazyka symbolických instrukcí

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

Viz také