Hva er Stack / Stack Pointer: Typer og applikasjoner

Prøv Instrumentet Vårt For Å Eliminere Problemer





Stakken er ikke annet enn den lineære datastrukturen der innsetting og sletting bare foregår i den ene enden. Innsettingsoperasjonen har et spesielt navn kjent som PUSH, og slettingsoperasjonen har også et spesielt navn kjent som POP. PUSH og POP er to grunnleggende operasjoner som bare kan utføres i en bestemt stabel. Det er en gruppe minneplasser, og minneplasseringene er relatert til enten lesehukommelse eller skrivehukommelse. Dette brukes til å lagre binær informasjon under gjennomføringen av programmet, når vi kjører et hvilket som helst program, vil innholdet i det programmet lagres i stabelen. Det følger Last In First Out (LIFO) og den brukes bare til lagring og henting av data, men ikke brukt til lagring av data. Den korte forklaringen av stabelen / stakkpekeren er diskutert nedenfor.

Hva er Stack / Stack Pointer?

Definisjon: Stakken er en lagringsenhet som brukes til å lagre informasjon eller data på en måte som LIFO (Last In First Out). Hver gang vi legger inn dataene i form av LIFO-måte, er elementet som må slettes først, det siste innsettingselementet, så det siste innsatte elementet blir tatt ut først. Det er minneenheten i et adresseregister som kalles stack pointer (SP). Stakepekeren indikerer alltid det øverste elementet i stakken som betyr hvilken plassering dataene må settes inn.




Typer stabler

Det er to typer stabler de er registerstak og minnestakk.

Registrer Stack

Registerstakken er også en minneenhet som er tilstede i minneenheten, men den håndterer bare en liten mengde data. Bunndybden er alltid begrenset i registerstakken fordi størrelsen på registerstakken er veldig liten sammenlignet med minnet.



Trykk operasjonen i registerstakken

Trinn 1: Stakepekeren øker med 1.

SP ← SP + 1


Steg 2: Legg inn dataene i bunken.

1000 [SP] ← CT

Hvor DR er dataregisteret

Trinn 3: Sjekk om bunken er full eller ikke

hvis (sp = 0) så (full ← 1)

Trinn 4: Merk ikke tom

tom ← 0

Popoperasjon i Register Stack

Trinn 1: Les data fra bunken.

DR ← M [SP]

Steg 2: Reduser stabelpunktet.

SP ← SP-1

Trinn 3: Sjekk om bunken er tom eller ikke

hvis sp = 0 så er tom ← 1

Stabelorganisasjonen til 64-biters registerstakken er vist i figuren nedenfor.

Registrer Stack Organisasjon

Registrer Stack Organisasjon

Memory Stack

I minnestakken er bunndybden fleksibel. Den opptar en stor mengde minnedata, mens det i registerstakken bare blir lagret et endelig antall minneord.

Trykk operasjonen i minnestakken

Trinn 1: SP ← SP-1

Steg 2: 1000 [SP] ← CT

Popoperasjon i Memory Stack

Trinn 1: DR ← M [SP]

Steg 2: SP ← SP-1

Sammenlignet med registerenheten, lagrer minneenheten en stor mengde data. Minnestakk-figuren er vist i figuren nedenfor.

Memory Stack

Memory Stack

Den totale minneenheten er delt inn i tre deler, den første minneenheten har programmet (ingenting annet enn instruksjoner), den andre delen er data (operander) og den tredje delen er stablet. Programinstruksjonene lagres alltid i programtelleren (PC), dataregistrene identifiseres av adresseregisteret (AR). Adressen 3000 til 4001 brukt til stakken og det første elementet eller elementet er lagret på 4001.

Stack / Stack Pointer i 8085 mikroprosessor

Programmørvisningen til 8085 mikroprosessor inneholder generelle registre og spesialregister . Generelle registre er A, B, C, D, E, H, L, og spesielle formålsregister er SP (Stack Pointer) og PC (Program Counter). Programmeringsvisningen av 8085 mikroprosessor er vist i figuren nedenfor.

Programmerervisning av 8085

Programmerervisning av 8085

Stakepekeren er et 16-biters register som inneholder minneadresse, antar at stakkpekerinnholdet (SP) er FC78H, så tolker mikroprosessoren 8085 det. Minneplasseringene har nyttig informasjon fra FC78H til FFFH, og fra FC77H til 0000H har minneplasseringen ikke nyttig informasjon. Tolkningen av stabelpekeren er vist i figuren nedenfor.

Tolkning av Stack Pointer

Tolkning av Stack Pointer

Grunnleggende operasjoner for stakk / stakkpeker

Det er to operasjoner av stakken de er: PUSH-drift og POP-drift.

PUSH-drift

PUSH betyr å skyve eller sette inn et element i bunken. PUSH-operasjonen øker alltid stabelpekeren, og POP-operasjonen reduserer alltid stackpekeren. I tilfelle push-operasjon, må vi sjekke om det er ledig plass tilgjengelig eller ikke. Hvis ledig plass er tilgjengelig, kan vi gå til push-operasjonen. Hvis ledig plass ikke er tilgjengelig, oppstår det en feilmelding som er overløp. Overløpet skal kontrolleres i tilfelle trykkoperasjon. Den grunnleggende operasjonen av push og pop er vist i figuren nedenfor.

Grunnleggende betjening av PUSH og POP

Grunnleggende betjening av PUSH og POP

Figur (a) er stabelen. Hvis du vil skyve elementet som er å sette elementet inn i stakken, må du skyve (s, a), der ‘s’ ikke er annet enn en stabel. I stabelen plasserer vi ‘a’-elementet, og denne operasjonen er vist i figur (b). Se figuren (3), anta at stakken inneholder tre elementer a, b, c, og stakken er fylt med et element.

Hvis du vil sette inn et fjerde element-‘d ’ved hjelp av trykk (s, d), men det ikke er ledig plass til å sette inn elementet, indikerer det at stakken er overløp. Overløpsterminologien brukes når stabelen er full og algoritmen for trykkoperasjon er vist nedenfor.

trykk (stakk [], topp, maks stabel, vare)

hvis (topp == maxstack-1)

{

skriv ut “overflow”

}

ellers

{

topp = topp + 1

stack [top] = element

}

slutt

POP-drift

POP betyr å slette elementet øverst i bunken. I tilfelle popoperasjon, må vi sjekke om stabelen i utgangspunktet er tom eller ikke. Hvis bunken først er tom, oppstår det en understrømningssituasjon. Anta at bunken er tom, men du vil skyve elementene i bunken, men det er ingen elementer i bunken, så fører den til understrøm.

Understrømmen skal kontrolleres i tilfelle popoperasjon. I pop-operasjon uansett hva toppelementet er tilstede i stakken som skal poppes eller slettes, så det er ikke nødvendig å nevne hvilket element som vil poppes, som standard vil det øverste elementet poppes. Algoritmen til popoperasjon er vist nedenfor.

pop (stack [], top, item)

hvis (topp == - 1)

{

skriv ut “underflow”

}

ellers

{

item = stack [top]

topp = topp-1

}

Eksempel

Elementene settes inn i rekkefølgen som A, B, C, D, E, det representerer stabelen med fem elementer. I figur (a) ønsker vi å skyve 'A' element på stabelen så blir toppen null (topp = 0), på samme måte toppen = 1 når 'B' elementet skyves, toppen = 2 når 'C' elementet skyves, topp = 3 når 'D' elementet skyves, og topp = 4 når 'E' elementet skyves.

Så uansett hvilke elementer jeg har tatt blir plassert i stabelen, nå er stabelen full. Hvis du vil skyve et annet element, er det ikke noe sted i stakken, så det indikerer overløp. Nå er stabelen full hvis du vil pope elementet ‘E’ elementet må slettes først. Trykkoperasjonen er vist i figuren nedenfor.

Push-operasjon

Push-operasjon

Vi må bruke popoperasjonen til å slette elementene i bunken. Så bare nevn pop () ikke skriv argumenter i pop fordi det som standard sletter toppelementet. Det første 'E' elementet slettes neste 'D' element ... .. 'A'. Når toppelementene slettes, reduseres toppverdien. Når topp = -1, indikerer stabelen understrøm. Popoperasjonen er vist i figuren nedenfor.

POP-drift

POP-drift

Så dette er forklaringen på hvordan elementene settes inn og slettes i bunken ved hjelp av trykk- og popoperasjon.

applikasjoner

Applikasjonene til stabelen / stakkpekeren er

  • Vending av streng
  • Balansert parentes
  • GJERN / FINGER
  • Systemstak for aktiveringsposter
  • Infiks, prefiks, postfiks, uttrykk

Vanlige spørsmål

1). Hva er stakkpekeren i armen?

Stakkpekerregisteret (R13) brukes som peker til den aktive stakken i ARM.

2). Hvorfor er stackpekeren 16 bit?

Stakepekeren (SP) og programtelleren (PC) som brukes til å lagre den forrige plasseringen, og minneplasseringsadressen er 16 bits, så stakkpekeren (SP) er også på 16 bit.

3). Hva er rollen til stakkpekeren?

Rollen til stakkpekeren (SP) er å indikere toppen av elementet i stakken.

4). Hvilken stabel brukes i 8085?

Bunken som ble brukt i 8085 er Last In First Out (LIFO).

5). Er stakkpeker et register?

Ja, stakkpekeren (SP) er et adresseregister som alltid indikerer toppen av elementet i stakken.

I denne artikkelen hva er