Hvad er et indeksregister?
I computerprogrammering og computerarkitektur er et indeksregister et hukommelsesområde, der normalt er indbygget i den centrale behandlingsenhed (CPU), der skal bruges som en meget hurtig tæller til at gå igennem hukommelsesadresser eller til at holde styr på operationer såsom looping. Afhængigt af typen af systemarkitektur kan et indeksregister være et defineret og dedikeret register blandt andre processorregistre, eller det kan være et hvilket som helst generelt register. Oftest har et indeksregister den aktuelle forskydning af en hukommelsesplacering, hvor et andet register holder baseadressen, så kombinationen af de to registre skaber en afsluttet hukommelsesadresse. En af de specielle funktioner i et indeksregister, når man specielt er udpeget af en CPU, er, at det kan bruges til let at trænge gennem hukommelsesadresser enten ved at blive inkrementeret eller dekrementeret efter behov, så datastrukturer såsom arrays og stacks kan krydres .
Indeksregistrerne på en computers CPU er utroligt lave hukommelsesområder, som normalt kun er direkte tilgængelige af en programmerer ved hjælp af samlingssprog eller et lignende programmeringssprog på lavt niveau. I nogle af de mere almindelige typer processorer defineres to separate registre som indeksregistre, nemlig kildeindeks (SI) og destinationsindeks (DI) -registre. Andre processorer har ikke specifikt indeksregistre eller understøttende operatører, der kræver dem, hvilket betyder, at der kan bruges et almindeligt register med den passende størrelse.
En af de hyppigste anvendelser til et indeksregister er at fungere som en markør til et hukommelsessted, der indeholder en strøm af data, der skal åbnes sekventielt. Et eksempel kan ses, når man bruger en matrix af data, hvor alle elementer er arrangeret fortløbende i hukommelsen. Hvis indeksregisteret bruges til at få adgang til en matrix, kan det indeholde den tilsvarende værdi af forskydningen af det element, der i øjeblikket er adgang til, når det tilføjes til et andet register, der har en baseadresse, såsom datasegmentregisteret. Dette kan gøre det meget let at gennemføre procedurer, såsom at kopiere indholdet i en nul-afsluttet streng fra en kildeposition til en destinationsstreng.
En anden anvendelse til et indeksregister kan være at indeholde oplysninger om sløjfer og andre tællere. Nogle systemarkitekturer foretrækker at bruge indeksregisteret til at indeholde antallet af iterationer, der er forekommet i en løkke, selvom andre gange ethvert register kan bruges. Derudover er nogle monteringsinstruktioner specifikt afhængige af kilde- og destinationsindeksregistre for at udføre visse operationer, såsom blokhukommelseslæsning eller skrivning, som det måske gøres for at sende information til en skærm.