Kas yra kamino registras?

Kalbant apie kompiuterius, kamino registras yra atminties vieta – paprastai centriniame procesoriaus įrenginyje (CPU) arba susijusioje apdorojimo aparatinėje įrangoje – kurioje saugomas dabartinis atskiros kompiuterio atminties srities, vadinamos kaminu, viršuje. Dėmių registras yra svarbus, nes be jo kompiuteris turėtų įdiegti lėtesnį, labiau linkusių klaidų metodą programos vykdymo srautui sekti. Daugumoje sistemos architektūrų kamino registras yra tam skirtas registras, todėl jis nėra atsitiktinai pasiekiamas dirbant su kitais atminties registrais. Rečiau dėklo registras gali būti bendras registras, kurį paprastai pasiekia programa, bet kuris sąmoningai nenaudojamas, nes jo naudojimą apibrėžia gamintojas. Kai kompiuterinėje sistemoje yra du ar daugiau kamino registrų, o tai reiškia, kad gali būti daugiau nei vienas dėklas, architektūra vadinama kamino mašina.

Žemiausiame kompiuterio programavimo lygyje krūva yra atminties sritis – dažniausiai laisvosios kreipties atmintyje (RAM) – kuri turi aiškiai apibrėžtą veikimo tipą. Į krūvą gali būti įtraukta informacija per procesą, vadinamą stūmimu, arba iš jos gali būti gauta informacija, kuri vadinama iššokimu. Krūvos modelis yra pirmasis įvedimas, paskutinis išėjimas, o tai reiškia, kad jei kelios informacijos dalys įstumiamos į krūvą, tada pirmasis įstumtas elementas bus paskutinis, o paskutinis įstumtas elementas. būk pirmasis, kuris bus gautas naudojant pop komandą. Krūvos registras seka krūvos viršų, kuri visada yra paskutinis į ją įstumiamas elementas.

Kai kompiuterio programa vykdoma, kiekviena vykdoma instrukcija turi konkretų atminties adresą, kuriame ji laikinai saugoma programos vykdymo metu. Jei programa iškviečia paprogramę arba procedūrą, funkciją ar metodą, priklausomai nuo programavimo kalbos, tada programa turi pereiti prie paprogramės kodo atminties adreso, kad ją įvykdytų. Adresas, kuriame nutrūksta programos valdymo srautas, kad išsišakotų į paprogramę, perkeliamas į krūvą, kad jis būtų įsimenamas. Kai paprogramė baigia vykdyti, programa žino, kur ji turėtų grįžti pagrindiniame kode, iškeldama kodo adresą iš krūvos viršaus, kur yra nukreiptas krūvos registras.

Nors yra ir kitų metodų, kurie gali būti naudojami tiems patiems rezultatams pasiekti, naudojant kamino ir dėklo registrą galima įgyvendinti svarbią programavimo koncepciją, vadinamą rekursija. Rekursyvinė funkcija yra funkcija, kuri pagal savo kodą išsikviečia pati save. Šis procesas dažniausiai naudojamas rūšiavimo algoritmuose ir tam tikroms matematinėms funkcijoms. Stacko registras seka visus paskutinius adresus, kuriuose vykdoma šaka, todėl funkcija gali saugiai įgyvendinti rekursiją žinodama, kad galiausiai valdymas grįš į pradinį tašką. Viena komplikacija įvyksta, jei visas krūvas prisipildo, o atmintyje nelieka vietos, tokiu atveju įvyksta dėklo perpildymas ir nutrūksta programos vykdymas.