Co je to Stack Stack?
Ve vztahu k počítačům je registr stacků paměťové místo - obvykle na centrální procesorové jednotce (CPU) nebo souvisejícím hardwaru pro zpracování -, které drží aktuální adresu horní části oblasti samostatné počítačové paměti známé jako stack. Registr zásobníku je důležitý, protože bez něj by počítač musel implementovat pomalejší metodu náchylnější k chybám, která by sledovala průběh provádění programu. Ve většině systémových architektur je registr zásobníku vyhrazeným registrem, takže při práci s jinými paměťovými registry není náhodně zpřístupněn. Zřídka může být registr zásobníků obecný registr, který je obvykle přístupný programu, ale který se úmyslně nepoužívá, protože jeho použití je definováno výrobcem. Pokud počítačový systém obsahuje dva nebo více registrů zásobníku, což znamená, že existuje potenciálně více než jeden zásobník, je architektura známá jako zásobník.
Na nejnižší úrovni programování v počítači je zásobník oblastí paměti - obvykle v paměti RAM s náhodným přístupem -, která má dobře definovaný typ chování. Zásobník může mít k němu přidané informace v procesu zvaném tlačení nebo může z něj získat informace, které se nazývají praskání. Model stohu je first-in, last-out, což znamená, že pokud je do zásobníku zatlačeno několik informací, bude první vložený prvek poslední, který se má vyskočit, zatímco poslední vložený prvek bude být první, který bude načten pomocí příkazu pop. Registr zásobníku sleduje horní část zásobníku, což je vždy poslední položka, která je do něj vložena.
Když počítačový program provádí, má každá prováděná instrukce specifickou adresu paměti, kde je dočasně uložena po dobu trvání programu. Pokud program volá podprogram - nebo proceduru, funkci nebo metodu, v závislosti na programovacím jazyce - musí program skočit na paměťovou adresu kódu podprogramu, aby jej provedl. Adresa, kde se řídicí programový tok přeruší, aby se rozvětvil do podprogramu, je zasunuta do zásobníku, takže je zapamatována. Když podprogram dokončí provádění, program ví, kam by se měl vrátit v hlavním kódu tak, že vyskočí kódovou adresu z horní části zásobníku, kam směřuje registr zásobníku.
Ačkoli existují jiné metody, které lze použít k dosažení stejných výsledků, použití registru zásobníku a zásobníku umožňuje důležitou koncepci programování známou jako rekurze. Rekurzivní funkce je funkce, která v rámci svého vlastního kódu volá sama sebe. Tento proces se běžně používá při třídění algoritmů a pro určité matematické funkce. Registr zásobníku sleduje všechny poslední adresy, na nichž se provádí větvení, takže funkce může bezpečně implementovat rekurzi s vědomím, že se nakonec kontrola vrátí do bodu původu. Jedna komplikace nastane, když se celý zásobník zaplní a nezůstane žádná paměť v paměti. V takovém případě dojde k přetečení zásobníku, čímž se zastaví provádění programu.