3.doc

(32 KB) Pobierz
Rejestry procesora

Rejestry procesora

1. Ogólnego przeznaczenia

- mogą być wykorzystane do różnych zadań

- często występują ograniczenia

- mogą być używane do adresowania i do danych

2. Uniwersalne czy specjalizowane

- uniersalne:

- wzrasta elastycznośc i opcje programisty

- wzrasta wielkośc listy rozkazów i ich komplikacja

- specjalizowane:

- mniejsze (szybsze) instrukcje

- mniejsza elastyczność

3. Danych

- mogą być wykorzystane do przechowywania danych

- nie można używać ih do obliczania adresów argumentów

4. Adresowe

- mogą być uniwersalne lub przypisa e określonym trybom adresowa nia np.:

- wskaźnik segmentu - rejestr segmentu zachowuje adres podstawy segmentu

- rejestry indeksowe - używane do adresowania indeksowego mogą być indeksowane automatycznie

- wskaźnik stosu - adresowanie domyślne, brak jawnego argumentu adresu.

5. Flag - znacznik stanu

- bity tegp rejestru ustawiane są sprzętowo przez procesor w wyniku wykonania operacji np.:

- znak - zawiera bit znaku wyniku ostatniej operacji arytmetycznej

- zero - ustawianie, gdy wynik równy jest zero

- przeniesienie - gdy wynik operacji dał przeniesienie, operacje arytmetyczne na wielu słowach

- równość - ustawiamy, gdy wynikiem porównania logiczne jest równość

- parzystość - parzysta ilość bitów

- zezwolenie/blokowanie obsługi przerwań

- kierunek - decyduje czy przy operacjach blokowych indeksy będą zwiększane czy zmniejszane

- nadzorca - wskazuje, czy procesor pracuje w trybie nadzorcy, czy użytkownika

Rejestry przeznaczone do przechowywania adresów muszą mieć długośc wystarczającą do przechowywania najdłuższego adresu

Rejestry danych powinny móc przechowywać większość rodzajów danych

Często możliwym jest używanie sąsiednich rejestrów do przechowywania wartości o podwójnej długości

Rejestry ogólnego przeznaczenia - 16 bitowe rejestry, które mogą być używane niemal dowolnie, w pewnych sytuacjach mają jednak określone zadanie:

AX - akumulator - ma zastosowanie przy mnożeniu u dzieleniu, przy operacjach przesuwania bitów, podczas komunikacji z urządzeniami we/wy przez porty, można go traktować jako dwa rejestry 8 bitowe (AH i AL)

BX - rejestr bazowy (BH i BL) - ma zastosowanie podczas adresowania pamiéci, wraz z rejestrem DS, można tworzyć pełny logiczny adres danej (segment: offset = DS:BX)

CX - rejestr danych (CH i CL) - wykorzystywany w pętlach jako ich licznik, zastosowanie także w instrukcjach np. kopiujących łańcuchy danych

DX - rejestr danych (DH i DL) - wykorzystywany podczas dzielenia i mnożenia jako jedyny rejestr może wskazywać numer portu w operacjach we/wy

Rejestry segmentowe - 16 bitowe rejestry niezbédne podczas komunikacji z pamięcią. Przechowują segment pełnego adresu logicznego danej lub rozkazu.

CS - segment kodu - przechowuje numer segmentu w którym znajdują się rozkazy wykonywane przez procesor. Wraz z rejestrem IP tworzy pełny, logiczny adres (CS:IP) kolejnej operacji do wykonania. Zmiana wartości CS następuje podczas skoków i powrotów z procedur.

DC - segment danych - wskazuje na segment w którym znajdują się dane do programu (stałe, napisy, miejsca przechowywania zmiennych)

ES - dodatkowy rejestr segmentowy - wskazuje na dodatkowy segment danych

SS - rejestr stosu - wskazuje na początek segmentu przeznaczonego na stos.

Rejestry wskaźnikowe - 16 bitowe rejestry ściśle związane z rejestrami segmentowymi gdyż w połączeniu z nimi tworzą one wskaźnik do konkretnych miejsc w pamiéci

SI - rejestr źródła - wraz z DS tworzy pełny logiczny adres DS:SI początku łańcucha przeznaczonego do kopiowania (operacje łańcuchowe), może być stosowany także do przechowywania dowol nych wartości

DI - rejestr przeznaczenia - wraz z ES (ES:DI) tworzy ares miejsca gdzie kopiować dane, moż na też używać w innych sytuacjach

SP - wskaźnik stosu - adres wierzchołka stosu

BP - wskaźnik bazy - również wykorzystywany z rejestrem segmentowym stosu, używany do przekazywania zmiennych do/z procedur przez stos

Rejestry statusowe i sterujące - na podstawie ich stanu możemy stwierdzić jak bédzie przebiegała realizacja pewnych instrukcji, możemy również uzyskać informacje o wyniku ostatniej operacji arytmetycznej, jak również o tym, gdzie znajduje się kolejna instrukcja, którą ma wykonać procesor

IP - wskaźnik instrukcji (CS:IP) - pełny adres kolejnej instrukcji do wykonania (16-bitowy)

rejestr FLAG - 16 bitowy rejestr zawierający 9 bitów określających aktualny stan procesora

ZF - znacznik zera - ustawiany gdy wynikiem ostatniej operacji jest zero

SF - znacznik zn aku - ustawiany dla wyników ujemnych, jest kopią najstarszego bitu wyniku operacji

CF - znacznik przeniesienia - gdy następne przeniesienie z bitu najbardziej znaczącego lub gdy nastąpiła pożyczka (podczas odejmowania) na bit najbardziej znaczący)

AF - znacznik przeniesienia pomocniczego - ustawiany gdy mamy do czynienia z przeniesieniem z bitu 3 na 4 lub pożyczká z bitu 4 na 3

OF - znacznik przepełnienia - sygnalizuuje przekroczenie dopuszczalnego zakresu wy niku operacji

PF - znacznik parzystości

Kolejne 3 znaczniki używanedo sterowania działaniem procesora i niektórych instrukcji

DF - znaczniki kierunku - związany z kopiowaniem łańcuchów, jeśli 0 do SI i DI będą zwiększane podczas operacji łańcuchowych, w przeciwnym przypadku zmniejszanie

IF - znacznik zezwolenia na przerwanie, jeśli 0 to jest zablokowane przyjmowanie przerwań

TF - znacznik pułapki pracy krokowej - ustawienie powoduje po wykonaniu każdej instrukcji generowanie tzw. pułapek, wykorzystywanie w Turbo Debuger.

Rejestry procesora Pentium

- Ogólnego przez naczenia (robocze) - osiem 32 bitowych (EAX, EBX...)

- Segmentowe - sześć 16 bitowych (to co było + FS i GS)

- Znacznik stanu - rejestr EFLAGS (kody warunkowe i różne bity trybu)

- Wskaźnik rozkazu - adres bieżącego rozkazu (32 bitowy EIP)

Rejestry specjalne - przeznaczone do współpracy z jednostką zmiennopozycyjną

- arytmetyczne - 8 rejestrów 80 bitowych zawierajácycj liczbę zmiennopozycyjną o zwiększonej dokładności, każdy rejestr działa jak stos

- sterowania - 16 bitowy, zawiera bity sterujące pracą jednostki zmiennopozycyjnej, łącznie z zaokrągleniem

- stanu - 16 bitowy zawiera bity odzwierciedlające stan bieżący jednostki zmiennopozycyjnej, kody warunkowe informujące o wyniku ostatniej operacji oraz znaczniki stanu wyjątku

- słowo wyróżników - 16 bitowy, określa zawartość rejestrów numerycznych

- wskaźnik rozkazu - wskazuje rozkaz przerwany przez wyjątek

- wskaźnik danych - wskazuje arument przerwany przez wyjątek

 

...
Zgłoś jeśli naruszono regulamin