Skok (informatika): Porovnání verzí

Smazaný obsah Přidaný obsah
m odkaz imperativní programování
Dinybot (diskuse | příspěvky)
m robot: stylistické, typografické a kódové korekce a náhrady přesměrování podle specifikace
Řádek 14:
 
 
== Implementace skoku v [[procesor]]ech ==
 
Skok v [[strojový kód|instrukční síti]] většiny procesorů je implementován pomocí zápisu hodnoty nebo přičtení hodnoty do [[registr]]u [[čítač instrukcí|čítače instrukcí]].
Řádek 24:
** '''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á"„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é [[RISC]]ové procesory (např. [[SPARC]]) to řeší pravidly typu "ještě„ještě dvě instrukce za skokem se provedou bez ohledu na výsledek podmínky skoku"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í fronta|instrukční frontu]] a načíst do ní instrukce ze správné větve.
 
=== Specifika architektury x86 ===
 
Při programování v [[assembler]]u a strojovém kódu architektury [[x86]] se také rozlišuje, zda cílová adresa skoku leží ve stejné oblasti ([[segment]]u) paměti. Skoky tak lze dělit na:
Řádek 34:
Jako zvláštní případ skoku (či spíše volání podprogramu) lze chápat i [[programové přerušení]] (interrupt). Od procesoru [[Intel 80286|80286]] přibývá možnost instrukcí skoku změnit úlohu (přepnout [[počítačový program|proces]]), což lze označit jako skok ještě delší než dlouhý a v procesoru [[Intel 80386|80386]] přibývá možnost změnit [[stránkování]] tak, že zpracování procesu zůstává na stejné [[virtuální adresa|virtuální adrese]], ale dochází k změně [[fyzická adresa|fyzické adresy]] (tato technika patrně nemá jiné využití než jako úmyslná snaha znesnadnit [[debugování]] programu - viz [[zpětné inženýrství]]).
 
== Autorství podmíněného skoku ==
 
Za vynálezce podmíněného skoku je považována [[Augusta Ada King|Ada Lovelace]], první programátorka, spolupracovnice [[Charles Babbage|Charlese Babbage]], vývoj prvního mechanického počítače.
 
== Podívejte se také na ==
* [[Řízení běhu programu]]
* [[Cyklus_Cyklus (informatika)|Cyklus]]
* [[Nekonečný cyklus]]
* [[Church-Turingova teze]]