Što je stack / stack pokazivač: vrste i njegove primjene

Isprobajte Naš Instrument Za Uklanjanje Problema





Stog nije ništa drugo do linearna struktura podataka gdje se umetanje i brisanje odvija samo na jednom kraju. Operacija umetanja ima posebno ime poznato kao PUSH, a operacija brisanja također ima posebno ime poznato kao POP. PUSH i POP dvije su temeljne operacije koje se mogu izvesti samo u određenom hrpi. To je skupina memorijskih mjesta, a memorijska mjesta povezana su s memorijom za čitanje ili za pisanje. To se koristi za spremanje binarnih podataka tijekom izvršavanja programa, kada izvršavamo bilo koji program tada će se sadržaj tog programa pohraniti u stog. Slijedi Posljednji u prvom izlazu (LIFO) i koristi se samo za pohranu i dohvaćanje podataka, ali se ne koristi za spremanje podataka. Kratko objašnjenje pokazivača stoga / steka razmotreno je u nastavku.

Što je Stack / Stack Pointer?

Definicija: Stog je uređaj za pohranu koji se koristi za pohranu informacija ili podataka na način LIFO (Last In First Out). Kad god podatke unosimo u obliku LIFO, element koji se prvo mora izbrisati je zadnji element za umetanje, pa se zadnji izvađeni element prvo vadi. To je memorijska jedinica unutar adresnog registra koji se naziva stack pointer (SP). Pokazivač stoga uvijek označava gornji element u stogu, što znači na kojem mjestu se podaci moraju umetnuti.




Vrste stoga

Postoje dvije vrste stogova, oni su registarski i memorijski.

Registarski stog

Spis registra također je memorijski uređaj prisutan u memorijskoj jedinici, ali obrađuje samo malu količinu podataka. Dubina stoga uvijek je ograničena u stogu registara, jer je veličina stoga registra vrlo mala u usporedbi s memorijom.



Push operacija u stogu registra

Korak 1: Pokazivač stoga povećava se za 1.

SP ← SP + 1


Korak 2: Unesite podatke u stog.

1000 [SP] ← CT

Gdje je DR registar podataka

Korak 3: Provjerite je li stog pun ili nije

ako je (sp = 0) onda (puni ← 1)

Korak 4: Označi kao prazno

prazno ← 0

Pop operacija u stogu registra

Korak 1: Očitavanje podataka iz stoga.

DR ← M [SP]

Korak 2: Deckment stack point.

SP ← SP-1

Korak 3: Provjerite je li stog prazan ili nije

ako je sp = 0 onda je prazan ← 1

Organizacija stoga 64-bitnog stoga registra prikazana je na donjoj slici.

Registrirajte organizaciju stoga

Registrirajte organizaciju stoga

Memorijski stog

U memorijskoj hrpi dubina stoga je fleksibilna. Zauzima veliku količinu memorijskih podataka, dok će se u stogu registra pohraniti samo konačan broj memorijskih riječi.

Guranje u memorijskoj hrpi

Korak 1: SP ← SP-1

Korak 2: 1000 [SP] ← CT

Skočni rad u Memory Stacku

Korak 1: DR ← M [SP]

Korak 2: SP ← SP-1

U usporedbi s jedinicom registra, memorijska jedinica pohranjuje veliku količinu podataka. Slika memorijskog sloga prikazana je na donjoj slici.

Memorijski stog

Memorijski stog

Ukupna memorijska jedinica podijeljena je u tri dijela, prva memorijska jedinica ima program (ništa osim uputa), drugi dio su podaci (operandi), a treći dio je stog. Upute za program uvijek se pohranjuju u programski brojač (PC), a registri podataka identificiraju se adresnim registrom (AR). Adresa 3000 do 4001 koja se koristi za stog i prva stavka ili element pohranjena je na 4001.

Stack / Stack pokazivač u mikroprocesoru 8085

Pogled programera 8085 mikroprocesor sadrži registre opće namjene i registri posebne namjene . Registri opće namjene su A, B, C, D, E, H, L, a registri posebne namjene su SP (Stack Pointer) i PC (Brojač programa). Pogled programera mikroprocesora 8085 prikazan je na donjoj slici.

Pogled programera 8085

Pogled programera 8085

Pokazivač steka je 16-bitni registar koji sadrži memorijsku adresu, pretpostavimo da je sadržaj pokazivača steka (SP) FC78H, a zatim ga mikroprocesor 8085 interpretira. Memorijska mjesta imaju korisne informacije od FC78H do FFFH, a od FC77H do 0000H memorijsko mjesto nema korisne informacije. Tumačenje pokazivača stoga prikazano je na donjoj slici.

Tumačenje pokazivača stoga

Tumačenje pokazivača stoga

Osnovne operacije stoga / pokazivača stoga

Dvije su operacije steka: PUSH rad i POP rad.

PUSH Operacija

PUSH znači guranje ili umetanje elementa u stog. Operacija PUSH uvijek povećava pokazivač stoga, a POP operacija uvijek smanjuje pokazivač stoga. U slučaju push operacije moramo provjeriti ima li slobodnog prostora ili ne. Ako je slobodan prostor dostupan, možemo prijeći na push operaciju, ako slobodnog prostora nema, pojavit će se poruka o pogrešci koja je preplavljena. Preljev treba provjeriti u slučaju pritiska. Osnovna operacija guranja i iskakanja prikazana je na donjoj slici.

Osnovni rad PUSH-a i POP-a

Osnovni rad PUSH-a i POP-a

Slika (a) je stog. Ako želite gurnuti element koji ubacuje element u stog, morate pritisnuti (s, a), gdje 's' nije ništa drugo nego stog. U stog postavljamo element 'a' i ova je operacija prikazana na slici (b). Pogledajte sliku (3), pretpostavimo da stog sadrži tri elementa a, b, c, a stog je ispunjen elementom.

Ako želite umetnuti četvrti element -d pomoću push (s, d), ali nema prostora za umetanje elementa, to znači da je stog preliven. Terminologija preljeva koristi se kad je stog pun, a algoritam push operacije prikazan je u nastavku.

push (slaganje [], gornji, maksimalan stog, predmet)

ako (vrh == maxstack-1)

{

ispis 'preljev'

}

drugo

{

vrh = vrh + 1

stog [vrh] = stavka

}

kraj

POP operacija

POP znači brisanje elementa na vrhu stoga. U slučaju pop operacije, moramo provjeriti je li stog u početku prazan ili ne. Ako je stog u početku prazan, tada dolazi do situacije podlijevanja. Pretpostavimo da je stog prazan, ali ipak želite iskočiti elemente u stog, ali u njemu nema elemenata, što dovodi do podlivanja stoga.

Podljev treba provjeriti u slučaju pop operacije, odnosno. U pop operaciji, bez obzira na to koji je gornji element prisutan u stogu, koji treba iskočiti ili izbrisati, tako da nema potrebe spominjati koji će se element pojaviti, po defaultu će se pojaviti najviši element. Algoritam pop operacije prikazan je u nastavku.

skok (slag [], vrh, stavka)

ako (vrh == - 1)

{

ispis 'underflow'

}

drugo

{

item = stog [vrh]

vrh = vrh-1

}

Primjer

Elementi su umetnuti redoslijedom kao A, B, C, D, E, to predstavlja stog od pet elemenata. Na slici (a) želimo gurnuti element 'A' na stog, a zatim vrh postaje nula (vrh = 0), slično gornji = 1 kad se pritisne element 'B', gornji = 2 kada se pojavi element 'C' se gura, top = 3 kad se pritisne element 'D', a top = 4 kad se pritisne element 'E'.

Dakle, bilo koji elementi koje sam uzeo stavljeni su u stog, sad je stog pun. Ako želite gurnuti drugi element, u stogu nema mjesta, pa to ukazuje na preljev. Sad je stog pun, ako želite iskočiti element 'E' element prvo treba izbrisati. Postupak potiskivanja prikazan je na donjoj slici.

Push operacija

Push operacija

Moramo koristiti operaciju pop za brisanje elemenata u stogu. Dakle, samo spomenite pop (), ne pišite argumente u pop jer prema zadanim postavkama briše gornji element. Prvi element 'E' briše se sljedeći element 'D' ... .. 'A'. Kada se gornji elementi brišu, tada se gornja vrijednost smanjuje. Kada je vrh = -1, stog ukazuje na podlijevanje. Skočna operacija prikazana je na donjoj slici.

POP operacija

POP operacija

Ovo je objašnjenje načina na koji se elementi ubacuju i brišu u stogu pomoću push i pop operacija.

Prijave

Primjene pokazivača stoga / steka su

  • Preokret niza
  • Uravnotežene zagrade
  • OTKAZI / PRST
  • Sistemski sustav za aktivacijske zapise
  • Infiks, prefiks, postfiks, izraz

Najčešća pitanja

1). Što je pokazivač stoga u kraku?

Registar pokazivača stoga (R13) koristi se kao pokazivač na aktivni stog u ARM-u.

2). Zašto je pokazivač stoga 16-bitni?

Pokazivač steka (SP) i programski brojač (PC) koji se koriste za pohranu prethodnog mjesta i adrese lokacije memorije su 16 bita, tako da je pokazivač stoga (SP) također od 16 bita.

3). Koja je uloga pokazivača steka?

Uloga pokazivača na stog (SP) je naznačiti vrh elementa u stogu.

4). Koji se stog koristi u 8085?

Stog korišten u 8085. godini je Last In First Out (LIFO).

5). Je li pokazivač stoga registar?

Da, pokazivač steka (SP) je adresni registar koji uvijek označava vrh elementa u stogu.

U ovom članku što je