Registar (računarstvo)

**Registar**, u računarstvu *procesorski registar*, je poseban deo procesora koji služi za čuvanje informacija koje su potrebne procesu tokom izvršavanja programa. 
Osnovne karakteristike su velika brzina, ali mali kapacitet. Brzina je posledica rada na taktu centralnog procesora, što je u današnjim primenama značajno više od takta operativne memorije. Kapacitet je posledica činjenice da procesor ima mali deo izdvojen za skladištenje podataka spram operativne memorije koja je ogromna. Većina današnjih računara radi na sledeći način – podatak se iz operativne memorije učita u registar, obradi, potom vrati u operativnu memoriju – to se zove čitaj-piši arhitektura.

Procesorski registri su na vrhu memorijske hijerarhije i najbrži su način za pristup podatku u računaru. Veličina registra se izražava u bitima, na primer 8-bitni registar (kod 8-bitnih procesora), 32-bitni registar (kod 32-bitnih procesora) ili 64-bitni registar kod najnovije generacije procesora.

Registri su realizovani na istom komadu poluprovodnika kao i ostatak procesora, i organizovani kao tablica registara. Nekada su bili pravljeni kao diskretni elementi od flip-flopova ili u tehnologiji tankog filma, a pre toga od magnetnih prstenova.

Pojam registar se obično odnosi samo na one registre koji se mogu neposredno navesti kao ulazni ili izlazni za naredbe, prema skupu naredbi procesora. Ovi registri su, u stvari, *arhitekturni registri*. Na primer, x86 skup naredbi radi sa osam 32-bitnih registara, dok sam procesor ima još registara koji služe za neke druge svrhe.

Postoji više vrsta registara:
* **Registri podataka** se koriste za smeštanje celih brojeva i karaktera (za brojeve u pokretnom zarezu postoje drugi registri). Kod starijih i jednostavnijih procesora postoji poseban registar *akumulator* koji učestvuje implicitno u mnogim operacijama.
* **Adresni registri** sadrže memorijske adrese i služe za pristup operativnoj memoriji računara. Kod nekih procesora postoji poseban *indeksni registar* koji se često koristi za kompleksna kombinovanja radi računanja adrese.
* **Registri opće namene** mogu čuvati i podatke i adrese, znači mogu se smatrati kombinovano adresno/podatkovnim.
* **Registri podataka u pokretnom zarezu** su posebni registri koji se koriste prilikom računa u pokretnom zarezu od strane specijalizovanog procesora (FPU - Procesor za račun u pokretnom zarezu) odnosno dela procesora koji se bavi takvim računom.
* **Registri konstanti** služe samo za čitanje i to neke unapred izabrane, često korišćene vrednosti. Često se tako tretira nula, mada postoje primeri i za 1 ili pi. 
* **Vektorski registri** sadrže podatke za vektorski račun kod posebne vrste procesora (SIMD - jedna instrukcija više podataka).
* **Registri posebne namene** sadrže stanje programa i procesora; obično su to
** **[[Programski brojač]]** ili pokazatelj instrukcija sadrži adresu sledeće instrukcije programa koju treba izvršiti.
** **[[Pokazivač steka]]** je takođe vrsta adresnog registra koji pokazuje na vrh strukture podataka organizovane u memoriji.
** **[[Statusni registar]]** ili statusna reč sadrži podatke koji opisuju stanje procesora, izvršavanja tekuće instrukcije ili poslednjih značajnih promena.
* **Registar instrukcija** sadrži tekuću instrukciju koju izvršava procesor.
* **Indeks registri** služe kombinovanju sa adresnim registrima radi ostvarivanja složenijih načina dobijanja adrese podataka, operanada ili instrukcija.
* Kod nekih arhitektura, **registri zavisni od modela** (nekad se zovu **mašinski zavisni registri**) podatke ili podešavanja koja predstavljaju unutrašnje stanje procesora i nisu dostupni spolja. Njihova namena je specifična te su stoga povazani sa dizajnom procesora i nisu zajedničke za više generacija procesora.
* Registri namenjeni prihvatanju podataka iz operativne memorije, su skup memorijskih registara koji obično nisu smešteni na isti čip sa procesorom (za razliku od svih prethodno navedenih, ovi registri nisu vezani za arhitekturu procesora):
** Prihvatna međumemorija
** Međumemorija za podatke
** Međumemorija za adrese

Hardverski registri su slični registrima opšte namene, ali nisu smeštene na procesoru već na drugim čipovima i služe za privremeni smeštaj podataka, adresa i statusa.

Registar je najčešće kapaciteta jedne reči, a u procesoru ih ima nekoliko (tipično 1 - 32, intel x86 ih ima 8). Mogu biti podeljeni u grupe prema nameni (čuvanje adresa ili podataka). Registri su direktno adresibilni (može im se pristupiti) iz instrukcija.

## Povezano
* Primarna memorija
* Sekundarna memorija