A processzorregiszter egy adott hosszúságú mező a processzoron belüli ultragyors véletlen hozzáférésű memóriában (SRAM). Maga a processzor használja, lehet szoftveresen elérhető vagy elérhetetlen. Például amikor a következő utasítást lekérjük a memóriából, az az utasításregiszterbe kerül, amelyhez a programozó nem fér hozzá.
A programozottan hozzáférhetetlen regiszterek minden olyan processzorregiszter, amely a végrehajtó programból ilyen vagy olyan módon nem érhető el. Ilyen regiszterekre példa a már említett utasításregiszter .
A programozottan elérhető regiszterek olyan regiszterek, amelyek a végrehajtó programból ilyen vagy olyan módon elérhetők. Szinte minden ilyen regisztert a névazonosítója jelöl össze assembly nyelvi szinten , és a megfelelő numerikus azonosító kódja gépi nyelvi szinten. Az elérhetőség szempontjából a programozottan elérhető regiszterek nem ugyanazok, és gyakorlatilag két nagy alcsoportra oszthatók:
A speciális regiszterek [3] tartalmazzák a processzor működéséhez szükséges adatokat - alaptábla eltolásokat, hozzáférési szinteket stb.
A speciális regiszterek egy része a vezérlőeszközhöz tartozik, amely mikroutasítás -sorozat generálásával vezérli a processzort .
A regiszterekben tárolt értékekhez való hozzáférés közvetlenül a processzor órajel-frekvenciáján történik , és általában többször gyorsabban, mint a RAM-ban lévő mezők elérése (még akkor is, ha a gyorsítótár tartalmazza a szükséges adatokat), de a RAM mennyisége messze. meghaladja a processzorregiszterek teljes mennyiségét, az általános célú / adatregiszterek teljes "kapacitása" x86 processzorokhoz (például Intel 80386 és újabb) 8 regiszter 4 bájtos = 32 bájt ( x86-64 processzorokban - 16 a 8 bájtból = 128 bájt és néhány vektorregiszter).
A táblázat bemutatja az általános célú regiszterek számát számos elterjedt mikroprocesszor architektúrában. Érdemes megjegyezni, hogy egyes architektúrákban az egyes regiszterek használata bonyolult lehet. Tehát SPARC-ban és MIPS-ben a 0-s regiszterszám nem tárol információt, és mindig 0-ként olvasható, a regiszterrel ESP(a veremre mutató mutatóval) rendelkező x86-os processzorokban pedig csak néhány parancs működhet.
Építészet | egész regiszterek |
FP - regiszterek |
Megjegyzések |
---|---|---|---|
x86-32 | nyolc | nyolc | |
x86-64 | 16 | 16 | |
IBM System/360 | 16 | négy | |
z/Architektúra | 16 | 16 | |
Itanium | 128 | 128 | |
SPARC | 31 | 32 | A 0 (globális) regiszter mindig fut |
IBM Cell | 4~16 | 1~4 | |
IBM POWER | 32 | 32 | |
teljesítmény architektúra | 32 | 32 | |
Alpha | 32 | 32 | |
6502 | 3 | 0 | |
W65C816S | 5 | 0 | |
PIC | egy | 0 | |
AVR | 32 | 0 | |
ARM 32 bites [4] | 16 | különféle | |
ARM 64 bites [5] | 31 | 32 | |
MIPS | 31 | 32 | A 0 regiszter mindig nulla |
RISC-V | 31 | 32 | Ezenkívül van egy 0 regiszter, amely mindig nullát ad vissza |
Elbrus 2000 | 256 | -hoz igazodik
egész szám |
32 kétjegyű regiszter,
256 = 32 globális regiszter + 224 eljárási verem regiszter [6] |
IP ( English Instruction Pointer ) - egy regiszter, amely jelzi az utasítások eltolását (címét) a kódszegmensben (1234: 0100h szegmens / eltolás).
IP – 16 bites (az EIP alsó része)
EIP – 32 bites analóg (a RIP alsó része)
RIP - 64 bites analóg
A szegmensregiszterek olyan regiszterek, amelyek szegmensekre mutatnak.
Minden szegmensregiszter 16 bites.
CS ( kódszegmens ) , DS ( adatszegmens ) , SS ( veremszegmens ) , ES ( extra szegmens ) , FS, GS
A processzor valós üzemmódjában a szegmensregiszterek a 64Kb-es szegmens kezdetének címét tartalmazzák, 4 bittel jobbra tolva.
A processzor védett üzemmódjában a szegmensregiszterek tartalmazzák az operációs rendszer által lefoglalt memóriaszegmens választóját .
A CS egy kódszegmensre mutató mutató. A CS:IP összerendelés (CS:EIP/CS:RIP - biztonságos/64 bites módban) a következő utasítás memóriacímére mutat.
64 bites módban a CS, DS, ES és SS szegmensregiszterek nem vesznek részt a lineáris (folyamatos) cím kialakításában, mivel ebben a módban a szegmentálás nem támogatott.
Az adatregiszterek a köztes számítások tárolására szolgálnak.
RAX, RCX, RDX, RBX, RSP, RBP, RSI, RDI, R8 - R15 – 64 bites (nyilvántartó AX)
EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI, R8D - R15D - 32 bites (bővített AX)
AX ( Akkumulátor ) , CX ( számlálóregiszter ) , DX ( adatregiszter ) , BX ( alapregiszter ) , SP ( veremmutató ) , BP ( alapmutató ) SI (, forrásindex ), DI ( célindex ), R8W - R15W - 16 bites
AH, AL, CH, CL, DH, DL, BH, BL, SPL, BPL, SIL, DIL, R8B - R15B - 8 bites (16 bites regiszterek fele)
például AH - magas AX - 8 bit magas fele
AL - alacsony AX - 8 bit alacsony fele
RAX | RCX | RDX | RBX | ||||||||||||||||||||||||||||
EAX | ECX | EDX | EBX | ||||||||||||||||||||||||||||
FEJSZE | CX | DX | BX | ||||||||||||||||||||||||||||
AH | AL | CH | CL | D.H. | DL | BH | BL |
RSP | RBP | RSI | RDI | Rx | |||||||||||||||||||||||||||||||||||
ESP | EBP | ESI | EDI | RxD | |||||||||||||||||||||||||||||||||||
SP | BP | SI | DI | RxW | |||||||||||||||||||||||||||||||||||
SPL | BPL | SIL | DIL | RxB |
ahol x 8..15.
A RAX, RCX, RDX, RBX, RSP, RBP, RSI, RDI, Rx, RxD, RxW, RxB, SPL, BPL, SIL, DIL regiszterek csak 64 bites processzor módban érhetők el.
Flags regiszter FLAGS (16 bit) / EFLAGS (32 bit) / RFLAGS (64 bit) - tartalmazza a processzor aktuális állapotát.
A GDTR, LDTR és IDTR rendszerregisztereket az Intel286-tól kezdődő processzorokban vezették be, és arra tervezték, hogy tárolják a leíró táblák alapcímeit - a rendszerarchitektúra legfontosabb összetevőit védett módban végzett munka során.
A GDTR regiszter 32 bites (24 bites Intel286 esetén) alapcímet és 16 bites globális leíró tábla ( GDT ) korlátot tartalmaz.
Az LDTR regiszter látható része csak a helyi leírótábla (LDT) leíró választót tartalmazza. Maga az LDT-leíró automatikusan betöltődik a globális leíró táblából az LDTR rejtett részébe.
Az IDTR regiszter 32 bites (24 bites Intel286 esetén) alapcímet és 16 bites megszakításleíró tábla ( IDT ) korlátot tartalmaz. Valós módban a megszakítási vektortábla helyének megváltoztatására használható.
A TR regiszter látható része tartalmazza a Task State Segment Descriptor ( TSS ) választót. Maga a TSS-leíró automatikusan betöltődik a TR rejtett részébe a globális leíró táblából.
A regiszter egy funkcionális egység, amely információkat fogad, tárol és továbbít. A regiszterek triggerek csoportjából állnak , általában D. Az információ fogadásának és kiadásának típusa szerint 2 típusú regisztert különböztetünk meg:
A Shift regiszterek flip- flopok sorba kapcsolt lánca . A fő működési mód a kód bitjeinek eltolása az egyik triggerről a másikra az órajel minden impulzusa esetén.
Céljuk szerint a nyilvántartások a következőkben különböznek:
IP ( angol utasításmutató ) – egy regiszter, amely tartalmazza a következő végrehajtandó utasítás címeltolását a CS kódszegmenshez viszonyítva az x86 család processzoraiban .
Az IP-regiszter a CS-hez CS:IP-ként van társítva, ahol a CS az aktuális kódszegmens, az IP pedig az adott szegmenshez viszonyított aktuális eltolás.
Az IP-regiszter egy 16 bites mutatóregiszter. Ezen kívül az ilyen típusú regiszterek közé tartozik az SP ( angol Stack Pointer - veremmutató) és a BP ( angol alapmutató - alapmutató).
Működés elvePéldául a CS tartalmazza az értéket , az IP-regiszter pedig az eltolást . 2CB5[0]H123H
A következő végrehajtandó utasítás címét úgy számítjuk ki, hogy a CS-ben (Kódszegmensben) lévő címet hozzáadjuk az IP-regiszterben lévő offsethez:
2CB50H + 123H = 2CC73HÍgy a következő végrehajtandó utasítás címe: 2CC73H.
Az aktuális utasítás végrehajtásakor a processzor automatikusan megváltoztatja az IP regiszterben lévő értéket, így a CS:IP regiszterpár mindig a következő végrehajtandó utasításra mutat.
EIPA 80386-os processzortól kezdve bevezették a mutatóregiszter 32 bites változatát, az EIP -t ( Extended Instruction Pointer ) . Ebben az esetben az IP ennek a regiszternek az alsó vége (az első 16 bit). Az EIP működési elve általában hasonló az IP-regiszter működéséhez. A fő különbség az, hogy védett módban a valós módtól eltérően a CS regiszter egy szelektor (a szelektor nem magára a szegmensre mutat a memóriában, hanem a leíró táblázatban lévő szegmensleíróra ).
RIPA 64 bites processzorok saját utasításmutató regiszterüket használják - RIP .
Ennek a regiszternek az alsó része az EIP regiszter.
A RIP alapján egy új RIP-relatív címzési módszert vezettek be a 64 bites processzorokban. A RIP többi munkája hasonló az EIP regiszter munkájához.
processzortechnológiák | Digitális|||||||||
---|---|---|---|---|---|---|---|---|---|
Építészet | |||||||||
Instruction Set Architecture | |||||||||
gépszó | |||||||||
Párhuzamosság |
| ||||||||
Megvalósítások | |||||||||
Alkatrészek | |||||||||
Energiagazdálkodás |
Mikrokontrollerek | ||||||||
---|---|---|---|---|---|---|---|---|
Építészet |
| |||||||
Gyártók |
| |||||||
Alkatrészek | ||||||||
Periféria | ||||||||
Interfészek | ||||||||
OS | ||||||||
Programozás |
|