Hvad er et stakregister?
I forhold til computere er et stakregister en hukommelsesplacering - normalt på den centrale behandlingsenhed (CPU) eller beslægtet behandlingshardware - der har den aktuelle adresse på toppen af et område i separat computerhukommelse, der kaldes stakken. Stabelregistret er vigtigt, fordi en computer uden det skulle være nødt til at implementere en langsommere, mere fejlbenyttet metode til at spore strømmen af udførelse af et program. I de fleste systemarkitekturer er stakregistret et dedikeret register, så det ikke ved et uheld fås adgang til, når man arbejder med andre hukommelsesregistre. Mere sjældent kan et stakregister være et generelt register, som normalt er tilgængeligt af et program, men som med vilje ikke bruges, fordi dets brug er defineret af producenten. Når et computersystem indeholder to eller flere stakregistre, hvilket betyder, at der potentielt er mere end en stak, er arkitekturen kendt som en stakmaskine.
På det laveste niveau af computerprogrammering er en stak et hukommelsesområde - normalt i RAM-hukommelse (random access) (RAM) - der har en veldefineret opførselstype. Stakken kan tilføje oplysninger til den i en proces, der kaldes skubbe, eller den kan få oplysninger hentet fra den, som kaldes popping. Modellen for en stak er først-ind, sidst-ud, hvilket betyder, at hvis flere informationsstykker skubbes ind i stakken, så er det første element, der skubbes ind, det sidste, der bliver plukket ud, mens det sidste element, der skubbes ind, vil være den første, der hentes med en pop-kommando. Et stakregister holder styr på toppen af stakken, som altid er det sidste objekt, der skubbes ind i den.
Når et computerprogram udføres, har hver instruktion, der udføres, en bestemt hukommelsesadresse, hvor den midlertidigt gemmes i programmets varighed. Hvis et program kalder en subroutine - eller en procedure, funktion eller metode, afhængigt af programmeringssproget - skal programmet hoppe til hukommelsesadressen til subroutine-koden for at udføre den. Adressen, hvor programstyrestrømmen brydes til forgrening til subroutinen, skubbes på stakken, så den huskes. Når subroutinen er afsluttet udførelsen, ved programmet, hvor det skal vende tilbage i hovedkoden ved at banke kodeadressen fra toppen af stakken, hvor stakregisteret peger.
Selvom der er andre metoder, der kan bruges til at opnå de samme resultater, giver brug af en stak og et stakregister mulighed for et vigtigt programmeringskoncept kaldet rekursion. En rekursiv funktion er en funktion, der inden for sin egen kode kalder sig selv. Denne proces bruges ofte til sorteringsalgoritmer og til visse matematiske funktioner. Stabelregistret holder styr på alle de sidste adresser, hvor udførelsen forgrenes, så en funktion kan sikkert implementere rekursion med den viden om, at kontrol til sidst vil vende tilbage til oprindelsesstedet. En komplikation opstår, hvis hele stakken bliver fuld, og der ikke er plads i hukommelsen, i hvilket tilfælde der opstår en stakoverløb, der ophører med udførelsen af programmet.