Skip to main content

Hvad er et indeksregister?

I computerprogrammering og computerarkitektur er et indeksregister et område af hukommelse, der normalt er indbygget i den centrale behandlingsenhed (CPU), der skal bruges som en meget hurtig tæller til at træde gennem hukommelsesadresser eller for at holde styr på operationer såsom looping.Afhængig af typen af systemarkitektur kan et indeksregister være et defineret og dedikeret register blandt andre processorregistre, eller det kan være ethvert generelt formålsregister.Oftest har et indeksregister den aktuelle forskydning af en hukommelsesplacering, hvor et andet register holder basisadressen, så kombinationen af de to registre skaber en afsluttet hukommelsesadresse.En af de specielle funktioner i et indeksregister, når man er specielt udpeget af en CPU, er, at det let kan bruges til let at gennemgå hukommelsesadresser ved at blive forøget eller dekrementeret efter behov, så datastrukturer som arrays og stabler kan krydses.

Indeksregistrerne på CPU'en på en computer er utroligt lavt niveau af hukommelse, 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 Source Index (SI) og Destination Index (DI) -registrerne.Andre processorer har ikke specifikt indeksregistre eller understøttende operatører, der kræver dem, hvilket betyder, at ethvert generelt formålsregister over den passende størrelse kan bruges.

En af de hyppigste anvendelser til et indeksregister er at fungere som en markør til en hukommelsePlacering, der indeholder en strøm af data, der skal åbnes sekventielt.Et eksempel kan ses, når man bruger en række 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 får adgang til, når det tilføjes til et andet register, der har en basisadresse, såsom datasegmentregisteret.Dette kan gøre det meget let at gennemføre procedurer såsom kopiering af indholdet af en nul-termineret streng fra en kildeplacering til en destinationsstreng.

En anden anvendelse til et indeksregister kan være at holde information om sløjfer og andre tællere.Nogle systemarkitekturer foretrækker at bruge indeksregisteret til at holde antallet af iterationer, der har fundet sted i en løkke, selvom andre gange ethvert register kan bruges.Derudover er nogle monteringsinstruktioner specifikt afhængige af kilde- og destinationsindeksregistre til at udføre visse operationer, såsom blokering af hukommelse eller skrivning, som det måtte være gjort for at sende oplysninger til en skærm.