Közvetett átmenet

közvetett ág _ _ _ _ _ _ _ gépi kód . Ahelyett, hogy megadná a következő végrehajtandó utasítás címét , ahogy az a direkt ugrásoknál megszokott , itt az argumentum a cím helyét adja meg.

Ebben az esetben egy példa lehet egy olyan utasítás, mint az „indirekt ugrás az r1 regiszterben ”, ami azt jelenti, hogy a következő végrehajtandó utasítás az r1 regiszterben tárolt címen található. Az ugrás címe az utasítás végrehajtásáig nem ismert. A közvetett ugrások a memória helyétől is függhetnek .

A közvetett ugrás nagyon hasznos lehet feltételes elágazáshoz , különösen többutas ugrások esetén. Például a programba bevitt adatok alapján az érték megkereshető a kódmutatók ugrótáblájában [ , hogy az adatok értékétől függően különböző opciókat dolgozhasson fel .

A tábla címéhez adatérték adható, az eredmény pedig egy regiszterben tárolható. Ennek a regiszternek az értéke alapján közvetett ugrás végezhető, hatékonyan programvezérlést rendelve a bevitt adatoknak megfelelő kódhoz.

Hasonlóképpen a szubrutinhívási utasítások is lehetnek közvetettek, a hívott szubrutin címét egy regiszterben vagy memóriahelyen kell megadni.

Assembly nyelvi példák

SPARC : jmpl %o7
MIPS : jr $ra
x86 : jmp *%eax
ARM : mov pc, r2
Itán : br.ret.sptk.few rp
6502 : jmp ($0DEA)
65C816 : jsr ($0DEA,X)
Z80 : jp (hl)
Intel 8080 pchl

Lásd még