Registre

Enhver prosessor har registre for oppbevaring av forskjellige viktige data ved kjøring av instruksjoner i et program.

På Intel-plattformen er det mye tilbakekompatibilitet, som blant annet viser seg i hvordan prosessorens mange registre som regel er designet:

Illustrasjonen viser et typisk eksempel, nemlig registeret rax. Dette er en utvidelse av eax. Videre er eax en utvidelse av ax. Og ax består av ah ("a high") og al ("a low").

Med et slikt design kan man faktisk hente verdiene i eax, ax, ah og al bare ved å avlese rax. Bokstaven a står for akkumulator (dvs. «accumulator» på engelsk). Registeret brukes gjerne for aritmetikk og logikk.

Noen typer

I hovedsak finnes det tre typer registre og noen typer har igjen egne undergrupper.

Generelle

For generelle registre er det tre grupper av registre siden formålene er forskjellige.

Dataregistre

Det er ganske opplagt hva et dataregister brukes til, det er data.

Og det finnes fire stk – hvor disse utvider eksisterende mindre registre:

  • RAX (64-bit) <== EAX (32-bit) <== Accumulator (AX) (16-bit) <== AH og AL (8-bit).
  • RBX (64-bit) <== EBX (32-bit) <== Base (BX) (16-bit) <== BH og BL (8-bit).
  • RCX (64-bit) <== ECX (32-bit) <== Counter (CX) (16-bit) <== CH og CL (8-bit).
  • RDX (64-bit) <== EDX (32-bit) <== Data (DX) (16-bit) <== DH og DL (8-bit).

Pekerregister

Et pekerregister inneholder adressen til det som det skal pekes til. Man har f.eks. peker som viser til neste instruksjon som skal kjøres.

To pekerregistre:

  • ESP (32-bit) som utvider Stack Pointer (SP) (16-bit).
  • EBP (32-bit) som utvider Base Pointer (BP) (16-bit).

Indeksregister

Man bruker gjerne et indeksregister slik man bruker vanlige tellere i et hvilket som helst programmeringsspråk, når man skal forholde seg til tabeller eller vektorer.

To indeksregistre:

  • ESI (32-bit) som utvider Source Index (SI) (16-bit)
  • EDI (32-bit) som utvider Destination Index (DI) (16-bit).

Kontroll

Registre for kontroll handler om hva som har skjedd og hva som skal skje:

  • Flaggregister (32-bit) som inneholder flagg (dvs. 0 eller 1), her er noen:
    • Overflow Flag (OF)
    • Direction Flag (DF)
    • Interrupt Flag (IF)
    • Trap Flag (TF)
    • Sign Flag (SF)
    • Zero Flag (ZF)
    • Auxiliary Carry Flag (AF)
    • Parity Flag (PF)
    • Carry Flag (CF)
  • Instruction Pointer (IP) (32-bit), som peker til neste instruksjon.

Segment

Det finnes flere segmentregistre. De viktigste er for stack, kode og data.

TBC

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *