Što je indeksni registar?

U računalnom programiranju i arhitekturi računala, indeksni registar je područje memorije koje je obično ugrađeno u središnju procesorsku jedinicu (CPU) kako bi se koristilo kao vrlo brz brojač za koračanje kroz memorijske adrese ili za praćenje operacija kao što je petlja. Ovisno o vrsti arhitekture sustava, indeksni registar može biti definirani i namjenski registar među ostalim procesorskim registrima ili može biti bilo koji registar opće namjene. Najčešće, indeksni registar drži trenutni pomak memorijske lokacije, dok drugi registar drži osnovnu adresu, tako da kombinacija dvaju registra stvara dovršenu memorijsku adresu. Jedna od posebnih funkcija indeksnog registra, kada ga CPU posebno odredi, je da se može koristiti za jednostavno kretanje kroz memorijske adrese bilo povećanjem ili smanjenjem prema potrebi tako da se strukture podataka kao što su nizovi i stogovi mogu prijeći .

Indeksni registri na CPU-u računala su područja memorije nevjerojatno niske razine koja obično mogu izravno pristupiti samo programeru korištenjem asemblerskog jezika ili sličnog programskog jezika niske razine. U nekim od češćih tipova procesora, dva su odvojena registra definirana kao indeksni registri, odnosno registri izvornog indeksa (SI) i odredišnog indeksa (DI). Drugi procesori nemaju posebno indeksne registre ili prateće operatore koji ih zahtijevaju, što znači da se može koristiti bilo koji registar opće namjene odgovarajuće veličine.

Jedna od najčešćih upotreba indeksnog registra je da djeluje kao pokazivač na memorijsku lokaciju koja sadrži tok podataka kojem treba pristupiti uzastopno. Primjer se može vidjeti kada se koristi niz podataka u kojem su svi elementi poredani uzastopno u memoriji. Ako se indeksni registar koristi za pristup nizu, tada može sadržavati odgovarajuću vrijednost pomaka elementa kojem se trenutno pristupa kada se doda drugom registru koji sadrži osnovnu adresu, kao što je registar segmenta podataka. To može učiniti vrlo lakim dovršetak postupaka kao što je kopiranje sadržaja niza s nultim završetkom s izvorne lokacije u odredišni niz.

Druga upotreba indeksnog registra može biti čuvanje informacija o petljama i drugim brojačima. Neke arhitekture sustava radije koriste indeksni registar za držanje broja iteracija koje su se dogodile u petlji, iako se u drugim slučajevima može koristiti bilo koji registar. Osim toga, neke upute za sklapanje oslanjaju se posebno na izvorne i odredišne ​​indeksne registre za izvođenje određenih operacija, kao što je čitanje ili pisanje blok memorije, što se može učiniti za slanje informacija na zaslon.