Rietuvė: Skirtumas tarp puslapio versijų

Ištrintas turinys Pridėtas turinys
KamikazeBot (aptarimas | indėlis)
S r2.6.4) (robotas Pridedama: lv:Steks (datu struktūra)
Nėra keitimo santraukos
Eilutė 1:
[[Vaizdas:Data stack lt.svg|thumb|200px|right|Steko veikimo iliustracija]]
 
'''StekasRietuvė''' (angl. stack) – [[duomenų struktūradarinys]], veikianti [[LIFO]] ([[anglų kalba|angl.]] „last in first out“) principu. Kitaip tariant, iš stekorietuvės visada paimamas paskutinis į jį padėtas elementas, po to – priešpaskutinis ir t. t. Tai primena plytas, kraunamas vienas ant kitų stulpu.
 
StekasRietuvė palaikoparemia dvi pagrindines operacijas – '''push''' (padėti) ir '''pop''' (pasiimti).
 
== Aparatinė realizacija ==
Daugelis [[Procesorius|procesorių]] (ypač – [[CISC]] architektūros) palaikoparemia ''stekorietuvės'' darbąveikimą aparatiškai. Tokiuose [[Procesorius|procesoriuose]] būna vienas ar keli už ''stekąrietuvę'' atsakingi [[Registras (procesoriaus)|registrai]] ([[Intel 8080]] – SP, Intel x86 – ''SP'' ir ''ESP''), rodantys į ''stekorietuvės'' galąpabaigą. Procesoriaus vykdoma ''Pop'' operacija automatiškai perkelia į nurodytą [[Registras|registrą]] paskutinį ''stekorietuvės'' elementą ir sumažina ''stekorietuvės'' registro reikšmęvertę. ''Push'' operacija ''stekorietuvės'' [[Registras|registro]] reikšmęvertę padidina, bei nurodyto registro reikšmęvertę perkelia į steką. Asembleriu tokia operacijų seka gali būti aprašyta maždaug taip:
 
<source lang="asm">
PUSH AX ; ; Atitiktų žemiau komentaruose esančią seką:
; ADD SP, 2 ; (Keičiama stekorietuvės rodyklė, AX dydis baitais)
; MOV WORD PTR [SP], AX ; Registro reikšmėvertė perkeliama į stekąrietuvę
POP AX ; ; Atitiktų žemiau komentaruose esančią seką:
; MOV AX, WORD PTR [SP] ; StekoRietuvės viršūnė perkeliama į registrą
; SUB SP, 2 ; (Keičiama steko rodyklė, AX dydis baitais)
</source>
 
Sukompiliuotame [[Intel]] x86 procesoriui skirtos [[Programa (kompiuterio)|programos]] kode yra ''stekorietuvės'' [[Segmentas (programavime)|segmentas]], kuriame ir saugomilaikomi į stekąrietuvę dedami elementai.
 
Jei kodas generuojamas kompiliatoriaus, kviečiamų [[funkcija (programavimas)|funkcijų]] [[argumentas|argumentai]] [[programinis kodas|programiniame kode]] dažniausiai perduodami per ''stekąrietuvę'' (asembleriu programuojantis žmogus parametrus dažniausiai perduoda registruose).
 
[[Lokalūs kintamieji]] taip pat dažnai saugomi steke.