ebooksgratis.com

See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Skok (informatika) - Wikipedie, otevřená encyklopedie

Skok (informatika)

Z Wikipedie, otevřené encyklopedie

Vývojový diagram podmíněného větvení (podmíněného skoku)
Vývojový diagram podmíněného větvení (podmíněného skoku)

Skok (angl. jump, branch) je změna v sekvenčním vykonávání počítačového programu. Nižší programovací jazyky a strojový kód mají přímo příkaz skoku, vyšší (imperativní) programovací jazyky používají této konstrukce jen zřídka, aby bylo zachováno strukturované programování, používají většinou cykly a volání funkcí, procedur a metod.

Nejobecnější skok ve vyšších programovacích jazycích se obvykle označuje goto. Blízko mají ke skoku i příkazy break a continue (např. v jazyku C) respektive last a next (např. v jazyku perl). Pomocí skoku se implementují řídící struktury if, while, switch, for, a další.

Principielně existují dva druhy skoků:

  • nepodmíněný skok (angl. unconditional jump) – provede se vždy bez ohledu na výsledek předcházejícího výpočtu nebo stav programu
  • podmíněný skok (angl. conditional jump) – provede se jen v případě, že je splněna zvolená podmínka

Podmíněný skok lze využít k:

  • větvení programu – výběr z alternativ - implementace příkazu if nebo switch/case.
  • vytvoření cyklu (smyčky) - skočí se podle splnění podmínky cyklu - implementace příkazů while nebo for.


Obsah

[editovat] Implementace skoku v procesorech

Skok v instrukční síti většiny procesorů je implementován pomocí zápisu hodnoty nebo přičtení hodnoty do registru čítače instrukcí. Skok lze potom realizovat jako:

  • skok absolutní - do registru čítače instrukcí se přiřadí hodnota
  • skok relativní - do registru čítače instrukcí se přičte hodnota
    • krátký relativní skok (short jump) - do registru se přičítá rozsahem menší hodnota, než je rozsah čítače instrukcí (např. 1byte, rozsah <-128,+127> instrukcí)
    • dlouhý relativní skok (long jump) - do registru se přičítá rozsahem stejná hodnota, jako je rozsah čítače instrukcí

U moderních procesorů je podmíněný skok velice „drahá“ operace z hlediska času zpracování - procesor provádí instrukce na přeskáčku (instruction scheduling) a zároveň provádí více instrukcí současně (viz pipelining, superskalární architektura), takže procesor by pro zrychlení výpočtu potřeboval vědět, která instrukce bude za skokem následovat ještě dříve než je možné vyhodnotit splnění podmínky skoku. Některé RISCové procesory (např. SPARC) to řeší pravidly typu „ještě dvě instrukce za skokem se provedou bez ohledu na výsledek podmínky skoku“, obvyklejším řešením je odhadnout (s využití informací o předchozích průchodech danou částí programu), která varianta skoku nastane a v případě omylu zahodit rozpracované instrukce ze špatné větve, vyprázdnit instrukční frontu a načíst do ní instrukce ze správné větve.

[editovat] Specifika architektury x86

Při programování v assembleru a strojovém kódu architektury x86 se také rozlišuje, zda cílová adresa skoku leží ve stejné oblasti (segmentu) paměti. Skoky tak lze dělit na:

  • krátké skoky (short jump) - Cílovou adresu lze obvykle vyjádřit jako přírůstek aktuální adresy. Obvykle skok na jinou větev podmínky, na konec cyklu, atd.
  • dlouhé skoky (long jump, far jump) - Cílová adresa leží v jiném segmentu paměti, obvykle nepodmíněný skok na podprogram.

Jako zvláštní případ skoku (či spíše volání podprogramu) lze chápat i programové přerušení (interrupt). Od procesoru 80286 přibývá možnost instrukcí skoku změnit úlohu (přepnout proces), což lze označit jako skok ještě delší než dlouhý a v procesoru 80386 přibývá možnost změnit stránkování tak, že zpracování procesu zůstává na stejné virtuální adrese, ale dochází k změně fyzické adresy (tato technika patrně nemá jiné využití než jako úmyslná snaha znesnadnit debugování programu - viz zpětné inženýrství).

[editovat] Autorství podmíněného skoku

Za vynálezce podmíněného skoku je považována Ada Lovelace, první programátorka, spolupracovnice Charlese Babbage, vývojáře prvního mechanického počítače.

[editovat] Související články


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -