Start Logga In Skriv Artikel Om Oss
Vad söker du?
Allt om 'Stack'

Stack

Innehåll- 1. Allmänt - 2. Datalogi

1. Allmänt

En stack är en uppkastad hög. höstack, myrstack.

2. Datalogi

En stack används för att hantera data enligt modellen LIFO (Last In, First Out).En stack är ofta, men inte alltid, belägen i en process stacksegment.

När man lägger in data i en stack så brukar man kalla för att pusha data på stacken.Operationen som trycker in information i det rör som LIFOn i princip utgör kallas för push och operationen att ta bort data från stacken kallas för pop. Följande kod borde generera strängen "foo".

stack s;spush( "o" );spush( "o" );spush( "f" );write( spop() );write( spop() );write( spop() );

Hur stacken ovan implementeras är väldigt svårt att veta. Det kan lika gärna vara en länkad lista som en "riktig" stack.En riktig stack kan bestå, som hos Intel¹, av ett minnessegment och en stackpekare. När ett element pushas på stacken så skrivs minnet som finns på stacksegmentets basadress plus värdet på stackpekaren över, varpå stackpekaren ökas med det pushade värdets storlek.När ett element poppas från stacken så utspelar sig samma sak i omvänd ordning. Således måste man i förväg veta storleken för nästa element på stacken, annars riskerar stacken korrumpering.

¹ Motorolas arkitektur M68k använder en enklare teknologi där stackpekaren direkt anger minnets fysiska adress. Ursprungligen med 24-bitars adressbuss men från modellen MC68020 så gick man över till ren 32-bitars adressering. Intel hakade senare på med sin modell 80386 som även den använder en 32-bit adressbuss.

Följande exempel förutsätter att stackpekaren räknar i bytes.

move.w #1, d0; flytta värdet 1 till register d0move.w #2, d1; flytta värdet 2 till register d1push.b d0; pusha en byte från register d0 på stacken ; en byte med värdet 1 skrivs och stackpekaren ökas med ettpush.w d1; pusha ett word (2 bytes) på stacken från register d1 på stacken ; två bytes, ett word med värde 2, skrivs och stackpekaren ökas med tvåpop.wd2; popa ett word från stacken till register d2, det värde som var i d1 ; stackpekaren minskas med två och ett word läses in i register d2pop.wd3; popa ett word från stacken till register d3, men bara en liten ; hälften av det som läses av från stacken är pushat i den här kodsnutten ; stacken är korrumperad.

Redigera?

Artikeln skriven 2009-01-17 av Learning4sharing

Inga kategorier för denna artikel än...

Vi behhöver hjälp att kategorisera våra artiklar. Kan du skriva ett nyckelord för denna artikel? Du kan skriva upp till 3 olika nyckelord för denna artikel, vi uppskattar din hjälp!

Skriv nyckelord som du tycker beskriver denna artikel på ett bra sätt. Du kan ange 3 olika nyckelord för denna artikel, max 20 tecken per nyckelord.

  1. Lägg till fler
    Skriv in svaret på frågan: 7+3

Intresserad av fler artiklar?

Vägnät
Centrala Bilregistret
Cherbourg
Øresundsbro Konsortiet
Presentation Manager
Zilog
Z80
Dan Wolgers
Agnostiker

Senaste sökningarna

mentalsjukhus har fått 1313 sökningar. Den senaste gjordes 2021-06-13 11:30:40.

nystagmus har fått 997 sökningar. Den senaste gjordes 2021-06-13 11:29:53.

2 maj har fått 1433 sökningar. Den senaste gjordes 2021-06-13 11:26:46.

barcklind har fått 1057 sökningar. Den senaste gjordes 2021-06-13 11:26:15.

ES har fått 1305 sökningar. Den senaste gjordes 2021-06-13 11:25:54.

maskrosbarn har fått 1314 sökningar. Den senaste gjordes 2021-06-13 11:25:27.

församlingar har fått 935 sökningar. Den senaste gjordes 2021-06-13 11:25:13.

infinitiv har fått 1423 sökningar. Den senaste gjordes 2021-06-13 11:24:07.

signalsubstans har fått 1126 sökningar. Den senaste gjordes 2021-06-13 11:23:35.

flygsjuka har fått 1128 sökningar. Den senaste gjordes 2021-06-13 11:23:28.

Hawaii har fått 1208 sökningar. Den senaste gjordes 2021-06-13 11:22:44.

geriatrik har fått 940 sökningar. Den senaste gjordes 2021-06-13 11:20:45.

Designed by: template world
Learning4sharing.nu
All Rights Reserved. 0.30 SEK

Logga in

Välkommen att redigera och skriva nya artiklar!

Ingent Konto?

Skaffa konto för att redigera och skapa nya ariklar Nytt Konto.

Ny Användare

Välkommen att redigera och skriva nya artiklar! Skapa konto nedan.


Ett verifieringsmail kommer att skickas till din E-post som du måste öppna och verifiera din E-post med

Lägg till artikel

Du är inte inloggad.

Logga In eller Skapa konto.