În programarea computerelor și arhitectura computerelor, un registru index este o zonă de memorie încorporată de obicei în unitatea centrală de procesare (CPU) pentru a fi folosită ca un contor foarte rapid pentru a parcurge adresele de memorie sau pentru a ține evidența operațiunilor, cum ar fi bucla. În funcție de tipul de arhitectură a sistemului, un registru index poate fi un registru definit și dedicat printre alte registre de procesor sau poate fi orice registru de uz general. Cel mai frecvent, un registru index deține offset-ul curent al unei locații de memorie, un alt registru deținând adresa de bază, astfel încât combinația celor două registre creează o adresă de memorie completă. Una dintre funcțiile speciale ale unui registru index, atunci când unul este special desemnat de un procesor, este că poate fi folosit pentru a parcurge cu ușurință adresele de memorie, fie prin creșterea, fie decrementată, după cum este necesar, astfel încât structurile de date precum matricele și stivele să poată fi parcurse. .
Registrele index de pe CPU-ul unui computer sunt zone de memorie incredibil de la un nivel scăzut, care de obicei sunt accesibile direct doar de un programator prin utilizarea unui limbaj de asamblare sau a unui limbaj de programare similar de nivel scăzut. În unele dintre cele mai comune tipuri de procesoare, două registre separate sunt definite ca registre index, și anume registrele indexului sursă (SI) și indexului destinației (DI). Alte procesoare nu au în mod specific registre de index sau operatori de sprijin care le solicită, ceea ce înseamnă că poate fi utilizat orice registru de uz general de dimensiunea adecvată.
Una dintre cele mai frecvente utilizări pentru un registru index este să acționeze ca un pointer către o locație de memorie care deține un flux de date care trebuie accesat secvenţial. Un exemplu poate fi văzut când se utilizează o matrice de date în care toate elementele sunt aranjate consecutiv în memorie. Dacă registrul index este utilizat pentru a accesa o matrice, atunci acesta poate păstra valoarea corespunzătoare a offset-ului elementului care este accesat în prezent atunci când este adăugat la un alt registru care deține o adresă de bază, cum ar fi registrul de segment de date. Acest lucru poate face foarte ușor să finalizați proceduri, cum ar fi copierea conținutului unui șir terminat cu nul, dintr-o locație sursă într-un șir de destinație.
O altă utilizare a unui registru index poate fi păstrarea informațiilor despre bucle și alte contoare. Unele arhitecturi de sistem preferă să folosească registrul index pentru a păstra numărul de iterații care au avut loc într-o buclă, deși alteori poate fi folosit orice registru. În plus, unele instrucțiuni de asamblare se bazează în mod special pe registrele de index sursă și destinație pentru a efectua anumite operațiuni, cum ar fi citirea sau scrierea blocului de memorie, așa cum s-ar putea face pentru a trimite informații către un ecran.