Processorregistret är ett fält av en given längd i in - processorns ultrasnabba direktminne (SRAM). Den används av processorn själv, den kan antingen vara tillgänglig eller oåtkomlig av programvara. Till exempel, när nästa instruktion hämtas från minnet, placeras den i instruktionsregistret , som inte kan nås av programmeraren.
Programmatiskt otillgängliga register är alla processorregister som inte kan nås på ett eller annat sätt från det exekverande programmet. Ett exempel på sådana register är det redan nämnda instruktionsregistret .
Programmatiskt tillgängliga register är register som kan nås på ett eller annat sätt från det exekverande programmet. Nästan varje sådant register betecknas med sin namnidentifierare på assemblerspråksnivå och motsvarande numeriska identifieringskod på maskinspråksnivå. När det gäller tillgänglighet är programmässigt tillgängliga register inte samma sak och är praktiskt taget uppdelade i två stora undergrupper:
Specialregister [3] innehåller data som är nödvändiga för driften av processorn - bastabelloffset, åtkomstnivåer, etc.
En del av specialregistren tillhör styrenheten , som styr processorn genom att generera en sekvens av mikroinstruktioner .
Åtkomst till värdena som är lagrade i register utförs direkt vid processorns klockfrekvens och som regel flera gånger snabbare än att komma åt fält i RAM (även om cacheminnet innehåller nödvändiga data), men mängden RAM långt överskrider den totala mängden processorregister, den totala "kapaciteten" för allmänna ändamål/ dataregister för x86-processorer (till exempel Intel 80386 och nyare) 8 register på 4 byte = 32 byte (I x86-64-processorer - 16 av 8 byte = 128 byte och några vektorregister).
Tabellen visar antalet allmänna register i flera vanliga mikroprocessorarkitekturer. Det är värt att notera att i vissa arkitekturer kan användningen av enskilda register vara komplicerad. Så i SPARC och MIPS lagrar inte register nummer 0 information och läses alltid som 0, och i x86-processorer med ett register ESP(pekare till stacken) kan bara vissa kommandon fungera.
Arkitektur | heltalsregister _ |
FP - register |
Anteckningar |
---|---|---|---|
x86-32 | åtta | åtta | |
x86-64 | 16 | 16 | |
IBM System/360 | 16 | fyra | |
z/Arkitektur | 16 | 16 | |
Itanium | 128 | 128 | |
SPARC | 31 | 32 | Register 0 (globalt) är alltid igång |
IBM Cell | 4~16 | 1~4 | |
IBM POWER | 32 | 32 | |
makt arkitektur | 32 | 32 | |
Alfa | 32 | 32 | |
6502 | 3 | 0 | |
W65C816S | 5 | 0 | |
BILD | ett | 0 | |
AVR | 32 | 0 | |
ARM 32-bitars [4] | 16 | olika | |
ARM 64-bitars [5] | 31 | 32 | |
MIPS | 31 | 32 | Register 0 är alltid noll |
RISC-V | 31 | 32 | Dessutom finns register 0 som alltid returnerar noll |
Elbrus 2000 | 256 | i linje med
heltal |
32 tvåsiffriga register,
256 = 32 globala register + 224 procedurstackregister [6] |
IP ( English Instruction Pointer ) - ett register som indikerar offset (adress) för instruktioner i kodsegmentet (1234: 0100h segment / offset).
IP - 16-bitars (nedre delen av EIP)
EIP - 32-bitars analog (nedre delen av RIP)
RIP - 64-bitars analog
Segmentregister är register som pekar på segment.
Alla segmentregister är 16-bitars.
CS ( Code Segment ) , DS ( Data Segment ) , SS ( Stack Segment ) , ES ( Extra Segment ) , FS, GS
I processorns verkliga läge innehåller segmentregistren adressen till början av 64Kb-segmentet, skiftat åt höger med 4 bitar.
I processorns skyddade mod innehåller segmentregistren väljaren för minnessegmentet som tilldelats av operativsystemet.
CS är en pekare till ett kodsegment. CS:IP-bindningen (CS:EIP/CS:RIP - i säkert/64-bitarsläge) pekar på minnesadressen för nästa instruktion.
I 64-bitarsläge deltar inte segmentregistren CS, DS, ES och SS i bildandet av en linjär (kontinuerlig) adress, eftersom segmentering inte stöds i detta läge.
Dataregister används för att lagra mellanliggande beräkningar.
RAX, RCX, RDX, RBX, RSP, RBP, RSI, RDI, R8 - R15 - 64-bitars (register AX)
EAX, ECX, EDX, EBX, ESP, EBP, ESI, EDI, R8D - R15D - 32-bitars (extended AX)
AX ( Accumulator ) , CX ( Count Register ) , DX ( Data Register ) , BX ( Base Register ) , SP ( Stack Pointer ) , BP ( Base Pointer ) SI (, Source Index ), DI ( Destination Index ), R8W - R15W - 16-bitars
AH, AL, CH, CL, DH, DL, BH, BL, SPL, BPL, SIL, DIL, R8B - R15B - 8-bitars (halvor av 16-bitars register)
till exempel AH - hög AX - hög halva av 8 bitar
AL - låg AX - låg halva på 8 bitar
RAX | RCX | RDX | RBX | ||||||||||||||||||||||||||||
EAX | ECX | EDX | EBX | ||||||||||||||||||||||||||||
YXA | 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 |
där x är 8...15.
Register RAX, RCX, RDX, RBX, RSP, RBP, RSI, RDI, Rx, RxD, RxW, RxB, SPL, BPL, SIL, DIL är endast tillgängliga i 64-bitars processorläge.
Flaggregister FLAGS (16 bitar) / EFLAGS (32 bitar) / RFLAGS (64 bitar) - innehåller processorns aktuella tillstånd.
Systemregistren GDTR, LDTR och IDTR introducerades i processorer som börjar med Intel286 och är designade för att lagra basadresserna för deskriptortabeller - de viktigaste komponenterna i systemarkitekturen när man arbetar i skyddat läge.
GDTR-registret innehåller en 32-bitars (24-bitars för Intel286) basadress och en 16-bitars gräns för global deskriptortabell ( GDT ).
Den synliga delen av LDTR- registret innehåller endast den lokala deskriptortabellen (LDT) deskriptorväljaren. Själva LDT-deskriptorn läses automatiskt in i den LDTR-dolda delen från den globala deskriptortabellen.
IDTR-registret innehåller en 32-bitars (24-bitars för Intel286) basadress och en gräns för 16-bitars avbrottsdeskriptortabell ( IDT ). I verkligt läge kan den användas för att ändra platsen för avbrottsvektortabellen.
Den synliga delen av TR-registret innehåller väljaren Task State Segment Descriptor ( TSS ). Själva TSS-beskrivningen laddas automatiskt in i den dolda delen av TR:n från den globala deskriptortabellen.
Ett register är en funktionell enhet som tar emot, lagrar och överför information. Register består av en grupp triggers , vanligtvis D. Beroende på typen av mottagning och utfärdande av information särskiljs 2 typer av register:
Skiftregister är en seriekopplad kedja av vippor . Huvuddriftssättet är förskjutningen av kodens bitar från en trigger till en annan för varje puls av klocksignalen.
Av syftet skiljer sig registren åt i:
IP ( English Instruction Pointer ) - ett register som innehåller adressförskjutningen för nästa instruktion som ska exekveras i förhållande till CS -kodsegmentet i x86 - familjens processorer .
IP-registret är associerat med CS som CS:IP, där CS är det aktuella kodsegmentet och IP är den aktuella offseten från det segmentet.
IP-registret är ett 16-bitars pekarregister. Utöver det inkluderar denna typ av register SP ( English Stack Pointer - stack pointer) och BP ( English Base Pointer - baspekare).
FunktionsprincipTill exempel innehåller CS värdet , IP-registret lagrar offset . 2CB5[0]H123H
Adressen för nästa instruktion som ska exekveras beräknas genom att addera adressen i CS (Code Segment) till offseten i IP-registret:
2CB50H + 123H = 2CC73HSåledes är adressen för nästa instruktion som ska exekveras 2CC73H.
När den aktuella instruktionen exekveras ändrar processorn automatiskt värdet i IP-registret, så att CS:IP-registerparet alltid pekar på nästa instruktion som ska exekveras.
EIPFrån och med 80386-processorn introducerades en 32-bitarsversion av pekarregistret - EIP ( Extended Instruction Pointer ) . I det här fallet är IP den nedre delen av detta register (de första 16 bitarna). Principen för driften av EIP liknar i allmänhet driften av IP-registret. Huvudskillnaden är att i skyddat läge, till skillnad från verkligt läge, är CS-registret en väljare (väljaren pekar inte på själva segmentet i minnet, utan på segmentbeskrivningen i deskriptortabellen).
RIP64-bitars processorer använder sitt eget instruktionspekarregister - RIP .
Den nedre delen av detta register är EIP-registret.
Baserat på RIP har en ny RIP-relativ adresseringsmetod introducerats i 64-bitars processorer. Resten av arbetet med RIP liknar arbetet i EIP-registret.
Processor Technologies | Digital|||||||||
---|---|---|---|---|---|---|---|---|---|
Arkitektur | |||||||||
Instruktionsuppsättning arkitektur | |||||||||
maskinord | |||||||||
Parallellism |
| ||||||||
Genomföranden | |||||||||
Komponenter | |||||||||
Energihantering |
Mikrokontroller | ||||||||
---|---|---|---|---|---|---|---|---|
Arkitektur |
| |||||||
Tillverkare |
| |||||||
Komponenter | ||||||||
Periferi |
| |||||||
Gränssnitt | ||||||||
OS | ||||||||
Programmering |
|