Rejestry

Rejestry są to specjalne struktury wewnątrz procesora, pozwalające na przechowywanie w nich niewielkich danych

  1. do 4 bajtów w 32 bitowym procesorze
  2. 8 bajtów w jego 64 bitowym odpowiedniku
64 bits 32 bits 16 bits 8 bits (higher) 8 bits (lower)
RAX EAX AX AH AL
RBX EBX BX BH BL
RCX ECX CX CH CL
RDX EDX DX DH DL

Rejestry 64 bitowe zawierają w sobie rejestr 32 bitowy, który dalej dzieli się na 16 i 8 bitów.
Tak więc RAX zawiera w sobie rejestr EAX, który to ma podrejestr AX, ten z kolei dzieli się na dwa rejestry 8 bitowe AH i AL, itd.

W 32 bitowym komputerze rozróżniamy następujące rejestry ogólnego przeznaczenia:

EAX rejestr akumulator, w którym przechowywane są tymczasowe dane, z których będziemy korzystać
EBX rejestr bazowy, używany do przechowywania adresów w pamięci, do których będziemy się odwoływać
ECX rejestr licznika, używany jako licznik przy pętlach
EDX rejestr danych, używany do operacji arytmetycznych oraz do obsługi portów wyjścia/wejścia

W rejestrze EAX wyróżniamy 16 bitowy rejestr AX, zawierający młodsze 16 bitów, w EBX jest to rejestr BX, w ECX jest to CX, w EDX jest to rejestr DX.
16 bitowe rejestry dzielą się na dwa rejestry, zawierające ich młodsze i starsze 8 bitów:

AX AH + AL
BX BH + BL
CX CH + CL
DX DH + DL

Wyróżniamy również rejestry:

  1. segmentowe
  2. indeksowe
  3. wskaźnikowe

Segmentowe - służą do określania segmentu w pamięci, w którym znajdują się dane części programu

CS wskaźnik segmentu, w którym znajduje się kod aplikacji
DS wskazuje na segment z danymi
SS wskaźnik segmentu stosu
ES, FS, GS rejestry te używane są w przypadku wykonywania dalekich skoków

Indeksowe oraz wskaźnikowe - zawiera, m.in. wskaźnik do szczytu stosu (czyli adres w pamięci, pod którym znajduje się szczyt stosu) Zawierają adresy w pamięci, które są niezbędne do działania jakiejkolwiek aplikacji.

ESI rejestr zawierający adres źródła
EDI rejestr zawierający adres przeznaczenia
ESP wskaźnik szczytu stosu
EIP wskaźnik instrukcji
EBP rejestr bazowy