Kaj je register skladov?

V zvezi z računalniki je register sklada pomnilniška lokacija – običajno na centralni procesni enoti (CPU) ali povezani strojni opremi za obdelavo -, ki vsebuje trenutni naslov vrha območja ločenega računalniškega pomnilnika, znanega kot sklad. Register sklada je pomemben, ker bi moral računalnik brez njega izvajati počasnejšo, bolj nagnjeno k napakam metodo sledenja poteka izvajanja programa. V večini sistemskih arhitektur je register sklada namenski register, tako da do njega ne pride po naključju pri delu z drugimi pomnilniškimi registri. Redkeje je register skladov lahko splošen register, do katerega običajno dostopa program, vendar se namerno ne uporablja, ker njegovo uporabo določi proizvajalec. Ko računalniški sistem vsebuje dva ali več registrov skladov, kar pomeni, da obstaja potencialno več kot en sklad, je arhitektura znana kot stroj skladov.

Na najnižji ravni računalniškega programiranja je sklad območje pomnilnika – običajno v pomnilniku z naključnim dostopom (RAM) –, ki ima dobro opredeljeno vrsto vedenja. Sklad ima lahko informacije, ki so mu dodane v procesu, imenovanem potiskanje, ali pa se iz njega pridobivajo informacije, kar se imenuje popping. Model za sklad je prvi vstop, zadnji ven, kar pomeni, da če je več informacij potisnjenih v sklad, bo prvi potisnjen element zadnji, ki bo izstopil, medtem ko bo zadnji potisnjen element bodite prvi, ki bo priklican z ukazom pop. Register skladov spremlja vrh sklada, ki je vedno zadnji element, potisnjen vanj.

Ko se izvaja računalniški program, ima vsako navodilo, ki se izvaja, določen pomnilniški naslov, kjer je začasno shranjeno za čas trajanja programa. Če program pokliče podprogram – ali proceduro, funkcijo ali metodo, odvisno od programskega jezika –, mora program skočiti na pomnilniški naslov kode podprograma, da ga izvede. Naslov, kjer se tok nadzora programa prekine, da se razveje v podprogram, se potisne v sklad, tako da se zapomni. Ko se podprogram konča z izvajanjem, program ve, kam naj se vrne v glavni kodi, tako da izskoči kodni naslov z vrha sklada, kamor kaže register sklada.

Čeprav obstajajo druge metode, ki jih je mogoče uporabiti za doseganje istih rezultatov, uporaba registra sklada in sklada omogoča pomemben koncept programiranja, znan kot rekurzija. Rekurzivna funkcija je funkcija, ki znotraj lastne kode kliče samo sebe. Ta postopek se običajno uporablja pri algoritmih za razvrščanje in za nekatere matematične funkcije. Register sklada spremlja vse zadnje naslove, kjer se izvedba razveja, tako da lahko funkcija varno izvaja rekurzijo z zavedanjem, da se bo nadzor sčasoma vrnil na izvorno točko. Do zapleta pride, če je celoten sklad poln in v pomnilniku ne ostane nobenega prostora, v tem primeru pride do prepolnitve sklada, ki ustavi izvajanje programa.