Kaj je kazalnik skladov / skladov: vrste in njegove aplikacije

Preizkusite Naš Instrument Za Odpravo Težav





Sklop ni nič drugega kot linearna struktura podatkov, kjer vstavljanje in brisanje poteka samo na enem koncu. Operacija vstavljanja ima posebno ime, imenovano PUSH, operacija brisanja pa ima tudi posebno ime, imenovano POP. PUSH in POP sta dve temeljni operaciji, ki ju je mogoče izvesti samo v določenem kupu. Gre za skupino pomnilniških lokacij, ki so povezane z bralnim pomnilnikom ali pomnilnikom za zapisovanje. To se uporablja za shranjevanje binarnih informacij med izvajanjem programa, ko izvajamo kateri koli program, se bo vsebina tega programa shranila v sklad. Sledi Last In First Out (LIFO) in se uporablja samo za shranjevanje in pridobivanje podatkov, ne pa tudi za shranjevanje podatkov. Kratka razlaga kazalca sklada / sklada je opisana spodaj.

Kaj je kazalec sklada / sklada?

Opredelitev: Sklop je naprava za shranjevanje, ki se uporablja za shranjevanje informacij ali podatkov na način LIFO (Last In First Out). Kadar podatke vnesemo v obliki LIFO, je element, ki ga je treba najprej izbrisati, zadnji element vstavljanja, zato se zadnji vstavljeni element najprej vzame ven. To je pomnilniška enota znotraj naslovnega registra, ki se imenuje stack pointer (SP). Kazalec sklada vedno označuje zgornji element sklada, kar pomeni, na katero mesto je treba vstaviti podatke.




Vrste skladov

Obstajata dve vrsti skladov, ki sta registarski sklad in sklad pomnilnika.

Registriraj sklad

Spis registra je tudi pomnilniška naprava, ki je v pomnilniški enoti, vendar obdeluje le majhno količino podatkov. Globina sklada je v svežnju registrov vedno omejena, ker je velikost skladov registra zelo majhna v primerjavi s pomnilnikom.



Potisnite operacijo v registrskem skladu

Korak 1: Kazalec sklada se poveča za 1.

SP ← SP + 1


2. korak: Vnesite podatke v sklad.

1000 [SP] ← CT

Kjer je DR podatkovni register

3. korak: Preverite, ali je kup poln ali ne

če (sp = 0), potem (polno ← 1)

4. korak: Oznaka ni prazna

prazno ← 0

Pop operacija v registrskem skladu

Korak 1: Preberite podatke iz sklada.

DR ← M [SP]

2. korak: Zmanjšanje točke sklada.

SP ← SP-1

3. korak: Preverite, ali je sklad prazen ali ne

če je sp = 0, potem prazno ← 1

Organizacija skladov 64-bitnega skladovnega registra je prikazana na spodnji sliki.

Registracija organizacije skladov

Registracija organizacije skladov

Pomnilniški sklad

V pomnilniškem skladu je globina sklada prilagodljiva. Zaseda veliko količino pomnilniških podatkov, medtem ko bo v svežnju registra shranjeno le končno število pomnilniških besed.

Potisnite postopek v pomnilniškem skladu

Korak 1: SP ← SP-1

2. korak: 1000 [SP] ← CT

Pop operacija v Memory Stacku

Korak 1: DR ← M [SP]

2. korak: SP ← SP-1

V primerjavi z registrsko enoto pomnilniška enota shrani veliko količino podatkov. Slika pomnilniškega sklopa je prikazana na spodnji sliki.

Pomnilniški sklad

Pomnilniški sklad

Skupna pomnilniška enota je razdeljena na tri dele, prva pomnilniška enota ima program (nič drugega kot navodila), drugi del so podatki (operandi), tretji del pa sklad. Navodila za program se vedno shranijo v števec programov (PC), podatkovni registri pa se identificirajo z naslovnim registrom (AR). Naslov 3000 do 4001, uporabljen za sklad in prvi element ali element, je shranjen na 4001.

Kazalec sklada / sklada v mikroprocesorju 8085

Pogled programerja iz leta 8085 mikroprocesor vsebuje registre za splošno uporabo in registri za posebne namene . Registri za splošno uporabo so A, B, C, D, E, H, L, registri za posebne namene pa so SP (kazalec skladb) in PC (števec programov). Pogled programerja mikroprocesorja 8085 je prikazan na spodnji sliki.

Pogled programerja 8085

Pogled programerja 8085

Kazalec skladovnice je 16-bitni register, ki vsebuje pomnilniški naslov, domnevamo, da je vsebina kazalca sklada (SP) FC78H, nato pa ga mikroprocesor 8085 interpretira. Na lokacijah pomnilnika so uporabne informacije od FC78H do FFFH, od FC77H do 0000H pa na uporabniških lokacijah. Razlaga kazalca sklada je prikazana na spodnji sliki.

Interpretacija kazalca sklada

Interpretacija kazalca sklada

Osnovne operacije kazalca sklada / sklada

Obstajata dve operaciji sklada: PUSH in POP.

Delovanje PUSH

PUSH pomeni potiskanje ali vstavljanje elementa v sklad. Operacija PUSH vedno poveča kazalec sklada, operacija POP pa vedno zmanjša kazalec sklada. V primeru potisne operacije moramo preveriti, ali je na voljo prosti prostor ali ne. Če je na voljo prosti prostor, lahko preidemo na potisno operacijo, če prosti prostor ni na voljo, se pojavi sporočilo o napaki, ki je preplavljeno. Preliv je treba preveriti v primeru pritiska. Osnovna operacija potiskanja in pritiska je prikazana na spodnji sliki.

Osnovno delovanje PUSH in POP

Osnovno delovanje PUSH in POP

Slika (a) je sklad. Če želite element, ki vstavlja element, potisniti v sklad, morate potisniti (s, a), kjer 's' ni nič drugega kot sklad. V sklad postavimo element „a“ in ta postopek je prikazan na sliki (b). Glejte sliko (3), domnevamo, da sklad vsebuje tri elemente a, b, c in da je sklad napolnjen z elementom.

Če želite vstaviti četrti element -d s pomočjo push (s, d), vendar ni prostora za vstavitev elementa, to pomeni, da je sklad preliven. Terminologija prelivanja se uporablja, ko je sklad poln in je algoritem potisne operacije prikazan spodaj.

potisni (stack [], top, max stack, item)

če (zgoraj == maxstack-1)

{

natisni “overflow”

}

drugače

{

zgoraj = zgoraj + 1

kup [vrh] = element

}

konec

Operacija POP

POP pomeni brisanje elementa na vrhu sklada. Pri pop operaciji moramo preveriti, ali je sklad na začetku prazen ali ne. Če je sklad na začetku prazen, potem pride do podtoka. Recimo, da je sklad prazen, še vedno želite, da se elementi v njem pojavijo, vendar v njem ni elementov, kar vodi do podtoka sklada.

Preverjanje je treba preveriti v primeru popuščanja. Pri operaciji pop, ne glede na to, kateri zgornji element je prisoten v skladu, ga je treba pojaviti ali izbrisati, zato ni treba omenjati, kateri element bo prikazan, privzeto bo prikazan najvišji element. Algoritem pop operacije je prikazan spodaj.

pop (stack [], top, item)

če (zgoraj == - 1)

{

natisni 'underflow'

}

drugače

{

item = sklad [zgoraj]

top = top-1

}

Primer

Elementi so vstavljeni v vrstnem redu kot A, B, C, D, E, predstavlja niz petih elementov. Na sliki (a) želimo na sklad potisniti element 'A', nato vrh postane nič (zgoraj = 0), podobno vrh = 1, ko se potisne element 'B', vrh = 2, ko element 'C' je potisnjeno, top = 3, ko je potisnjen element 'D', in top = 4, ko je potisnjen element 'E'.

Torej, kateri koli elementi, ki sem jih vzel, so postavljeni v sklad, zdaj je sklad poln. Če želite potisniti drug element, v kupu ni prostora, zato to pomeni preliv. Zdaj je sklad poln, če želite pojaviti element, je treba najprej izbrisati element 'E'. Potisni postopek je prikazan na spodnji sliki.

Potisna operacija

Potisna operacija

Za brisanje elementov v kupu moramo uporabiti operacijo pop. Torej samo omenite pop (), ne pišite argumentov v pop, ker privzeto izbriše zgornji element. Prvi element „E“ se črta, naslednji element „D“ ... .. „A“. Ko se zgornji elementi izbrišejo, se zgornja vrednost zmanjša. Ko je vrh = -1, sklad kaže na podtok. Postopek pojavljanja je prikazan na spodnji sliki.

Operacija POP

Operacija POP

To je torej razlaga, kako se elementi vstavijo in izbrišejo v sklad z uporabo pritiska in izpiranja.

Aplikacije

Aplikacije kazalca sklada / sklada so

  • Spremenitev niza
  • Uravnotežena oklepaj
  • RAZVESTI / PRST
  • Sistemski sklad za aktivacijske zapise
  • Infix, predpona, postfix, izraz

Pogosta vprašanja

1). Kaj je kazalnik sklada v roki?

Register kazalca sklada (R13), ki se uporablja kot kazalec na aktivni sklad v ARM.

2). Zakaj je kazalnik sklada 16-bitni?

Kazalec sklada (SP) in števec programov (PC), ki se uporabljata za shranjevanje prejšnje lokacije in naslova lokacije pomnilnika, sta 16 bitov, zato je kazalnik sklada (SP) tudi 16-biten.

3). Kakšna je vloga kazalca skladovnice?

Vloga kazalca sklada (SP) je označevati vrh elementa v skladu.

4). Kateri sklad se uporablja v 8085?

Sklop, uporabljen leta 8085, je Last In First Out (LIFO).

5). Je kazalec sklada register?

Da, kazalec sklada (SP) je adresni register, ki vedno označuje vrh elementa v kupčku.

V tem članku, kaj je