Rozdział 1.4
Rejestry procesorów na przykładzie procesora Pentium firmy INTEL
Każdy procesor zawiera wiele rejestrów, jednak tylko część z
nich jest dostępna programowo. Na przykład w procesorach Pentium
mamy:
- 6 16-bitowych rejestrów segmentowych
- CS - wskaźnik segmentu kodu zawierającego następny do wykonania rozkaz,
- DS - wskaźnik segmentu danych,
- SS - wskaźnik segmentu stosu
- ES, FS, GS - wskaźniki dodatkowych segmentów.
- 4 32-bitowe rejestry ogólnego przeznaczenia:
- EAX akumulator, najefektywniejszy rejestr na dane i wyniki
w operacjach przesłania, logicznych i arytmetycznych, zwłaszcza w mnożeniu i dzieleniu,
- EBX rejestr typowo stosowany w adresowaniu pośrednim jako
przemieszczenie (offset) wskaźnika w segmencie określonym w rejestrze segmentowym DS. (adres logiczny DS:EBX),
- ECX rejestr zliczający (licznik pętli),
- EDX rejestr typowo stosowany na wskaźnik portu w operacjach wejścia-wyjścia,
- 4 32-bitowe rejestry wskaźnikowe i indeksowe:
- ESI indeks argumentu źródłowego przy operacjach łańcuchowych w segmencie określonym w rejestrze segmentowym DS (adres logiczny DS:ESI),
- EDI indeks argumentu docelowego przy operacjach łańcuchowych w segmencie określonym w rejestrze segmentowym ES (adres logiczny ES:EDI),
- EBP przemieszczenie (offset) wskaźnika bazowego w bieżącym segmencie stosu określonym w rejestrze segmentowym SS (adres logiczny SS:EBP),
- ESP przemieszczenie(offset) wskaźnika stosu w bieżącym segmencie stosu określonym w rejestrze segmentowym SS (adres logiczny SS:ESP),
Mniej znaczące 16 bitów rejestrów tworzy rejestry 16 bitowe AX, BX, CX, DX, BP, DI, SI, SP o tym samym przeznaczeniu.
8 bitów mniej znaczących rejestrów AX, BX, CX, DX tworzy 8 bitowe rejestry AL, BL, CL, DL, zaś 8 bitów bardziej znaczących
tworzy 8 bitowe rejestry AH, BH, CH, DH.
- 32-bitowy wskaźnik rozkazów EIP zawierający przemieszczenie
(offset) w segmencie kodu określonym w CS (adres logiczny CS:EIP). Ma on znaczenie licznika programu PC.
- 32 bitowy rejestr stanu procesora EFLAGS, zawierający pola znaczników:
- CF (ang. carry flag) - przeniesienie z najbardziej znaczącego bitu na pozycję nie reprezentowalną,
- PF (ang. parity flag) - 1, gdy liczba jedynek wyniku operacji jest parzysta
- AF (ang. auxiliary flag) - 1, gdy występuje przeniesienie z bitu numer 3 użyteczne w kodzie BCD)
- ZF (ang. zero flag) - 1, gdy wynik operacji jest zero,
- SF (ang. sign flag) - 1, gdy wynik operacji jest ujemny (jest to wartość najbardziej znaczącego bitu w kodzie U2),
- OF (ang. overflow) - 1, gdy wynik operacji przekracza największą dodatnią lub najmniejszą ujemną liczbę reprezentowalną w kodzie U2 (nadmiar stałoprzecinkowy)
a także wiele bitów sterujących ustawianych przez programistę, np.
- TF (ang. trap flag) - ustawianie trybu pracy krokowej, po każdym rozkazie wywołanie przerwania INT1
- IF (ang. interrupt flag) - blokada przerwań niemaskowalnych
- DF (ang. direction flag) - ustawianie czy pamięć jest zajmowana w kierunku adresów rosnących czy malejących,
- VM (ang. virtual mode) - flaga ustawienia trybu wirtualnego 8086
- 24 rejestry sterujące:
- CR0, CR2, CR3, CR4 - 32 bitowe rejestry sterujące pracą układów procesora: trybem pracy procesora, sposobem pracy pamięci podręcznej "cache", stronicowaniem pamięci,
- DR0-DR7 - 32 bitowe rejestry uruchomieniowe przeznaczone na adresy pułapek sprzętowych i ich status,
- TR3-TR7,TR12 - 32 bitowe rejestry wspomagające testowanie procesora, układu TLB i pamięci podręcznej,
- MCAR, MCTR - 64 bitowe rejestry do obsługi błędnych cykli magistrali zawierają adres i typ nieudanej operacji,
- 48 bitowe rejestry GDTR, LDTR i 16 bitowe rejestry IDTR, TR wspomagające segmentację pamięci w trybie wirtualnym chronionym
Powrót do rozdziału 1
Powrót do strony głównej