Vad är ett stackregister?
I förhållande till datorer är ett stackregister en minnesplats - vanligtvis på den centrala bearbetningsenheten (CPU) eller relaterad bearbetningshårdvara - som innehåller den aktuella adressen till toppen av en region i separat datorminne som kallas stacken. Stackregistret är viktigt eftersom en dator utan den skulle behöva implementera en långsammare och mer felaktig metod för att spåra flödet av exekvering av ett program. I de flesta systemarkitekturer är Stack Register ett dedikerat register så att det inte är av misstag åtkomst när man arbetar med andra minnesregister. Mer sällan kan ett stackregister vara ett allmänt register som vanligtvis är tillgängligt med ett program men som avsiktligt används inte eftersom användningen definieras av tillverkaren. När ett datorsystem innehåller två eller flera stackregister, vilket innebär att det finns potentiellt mer än en stack, är arkitekturen känd som en stackmaskin.
På den lägsta nivån på datorprogrammering är en stack ett minnesområde-vanligtvis i slumpmässigt åtkomstminne (RAM)-som har en väldefinierad typ av beteende. Stacken kan lägga till information till den i en process som heter Pushing, eller den kan ha information hämtad från den, som kallas popping. Modellen för en stack är först-in, sist-out, vilket innebär att om flera bitar av information skjuts in i stacken, kommer det första elementet som skjuts in att vara det sista som kommer ut, medan det sista elementet som skjuts in kommer att vara det första som hämtas med ett pop-kommando. Ett stackregister håller reda på toppen av stacken, som alltid är det sista objektet som skjuts in i den.
När ett datorprogram körs har varje instruktion som körs en specifik minnesadress där den tillfälligt lagras under programmets varaktighet. Om ett program kallar en subroutine - eller en procedur, funktion eller metod, beroende på programmeringsspråket & mrusa; Då måste programmet hoppa till minnesadressen för subroutine -koden för att köra den. Adressen där programkontrollflödet bryts till gren till subroutinen skjuts på bunten så att den kommer ihåg. När subroutinen har slutfört körning, vet programmet var det ska återvända i huvudkoden genom att poppa kodadressen från toppen av stacken, där stackregistret pekar.
Även om det finns andra metoder som kan användas för att uppnå samma resultat, gör det möjligt att använda ett stack- och stackregister ett viktigt programmeringskoncept som kallas rekursion. En rekursiv funktion är en funktion som inom sin egen kod kallar sig själv. Denna process används vanligtvis vid sortering av algoritmer och för vissa matematiska funktioner. Stackregistret håller reda på alla de sista adresserna där exekveringen grenar, så en funktion kan säkert implementera rekursion med kunskapen om att så småningom kontrollen kommer att återgå till ursprungspunkten. En komplication inträffar om hela stacken blir full och inget utrymme i minnet kvarstår, i vilket fall ett stacköverflöde inträffar, upphör att utföra programmet.