Rejestry procesora, dostępne programowo akumulatory, rejestr

12
REJESTRY PROCESORA, DOSTĘPNE PROGRAMOWO AKUMULATORY, REJESTR FLAGOWY, LICZNIK ROZKAZÓW, WSKAŹNIKI STOSÓW, REJESTRY ROBOCZE

Transcript of Rejestry procesora, dostępne programowo akumulatory, rejestr

REJESTRY PROCESORA, DOSTĘPNE PROGRAMOWO AKUMULATORY, REJESTR

FLAGOWY, LICZNIK ROZKAZÓW, WSKAŹNIKI STOSÓW, REJESTRY

ROBOCZE

Rejestry procesora – komórki pamięci o niewielkich rozmiarach (najczęściej 4/8/16/32/64/128 bitów) umieszczone wewnątrz procesora i służące do przechowywania tymczasowych wyników obliczeń, adresów lokacji w pamięci operacyjnej itd. Większość procesorów przeprowadza działania wyłącznie korzystając z wewnętrznych rejestrów, kopiując do nich dane z pamięci i po zakończeniu obliczeń odsyłając wynik do pamięci.Zawartość części tych rejestrów może być zmieniana w wyniku wykonywania programu. Rejestry takie są dostępne programowo. Do pozostałych rejestrów użytkownik nie ma dostępu.

Rejestry, ze względu na zastosowanie, można podzielić m.in. na:-rejestry danych – do przechowywania danych całkowitoliczbowych, np. argumentów i wyników obliczeń,-rejestry adresowe – do przechowywania adresów i uzyskiwania dostępu do pamięci, wśród nich wyróżnić można rejestry segmentowe,-rejestry ogólnego zastosowania (ang. general purpose), będące połączeniem dwóch powyższych typów, czyli mogące przechowywać zarówno dane, jak i adresy,-

-rejestry zmiennoprzecinkowe – do przechowywania i wykonywania obliczeń na liczbach zmiennoprzecinkowych, z reguły znajdujące się w oddzielnym bloku funkcjonalnym procesora, zwanym koprocesorem (FPU),-rejestry stałych – przechowujące stałe, jedynie do odczytu,-rejestry wektorowe – przechowujące dane do jednoczesnego przetwarzania wielu danych przez instrukcje typu SIMD,-rejestry specjalne, określające stan wykonania, wśród nich wymienić można rejestr wskaźnika instrukcji, wskaźnik stosu, rejestr flag procesora,-rejestry instrukcji – do przechowywania obecnie przetwarzanej instrukcji.

Akumulator - rejestr, który zawiera jeden z argumentów wykonywanej operacji i do którego ładowany jest wynik wykonywanej operacji. Akumulator jest zazwyczaj oznaczany A lub ACC, ma on wielkość słowa maszynowego.W niektórych procesorach nie ma specjalizowanego rejestru będącego akumulatorem, rezultaty działań jednostki arytmetyczno logicznej może być umieszczana w dowolnym rejestrze ogólnego przeznaczenia, jak w ARM – instrukcje mogą operować na wielu rejestrach. W niektórych architekturach, funkcję akumulatora mogą realizować wybrane rejestry, albo różne rejestry w stosunku do różnych .Możliwość użycia rejestrów ogólnego przeznaczenia jako argumentu i miejsca wyniku podyktowane jest względami praktycznymi przy wykonywaniu kodu, mianowicie nie są potrzebne dodatkowe przesunięcia by wykonać zadaną operację, które zajmują czas procesorowi.

Rejestrem flagowym nazywamy rejestr zawierający dodatkowe cechy wyniku wykonywanej operacji potrzebne do podjęcia decyzji o dalszym sposobie przetwarzania informacji. Cechami tymi mogą być przykładowo znak wyniku, wystąpienie przekroczenia zakresu czy parzystość (na przykład parzysta bądź nieparzysta liczba I jedynek w wyniku). Ustawiony bit nazywamy znacznikiem lub flagą 

Lista najczęściej używanych flag:

1. CY lub CF (ang.curry flag)- flaga przeniesienia lub pożyczki. Ustawiana (czyli przyjmuje wartość 1), gdy rezultat operacji przekracza zakres długości słowa, 1 w którym zapisywany jest wynik. Istotna dla operacji arytmetycznych na liczbach bez znaku.2. Z lub ZF (ang.zeru flag)- flaga sygnalizująca, że wynikiem ostatnio wykonywanej operacji jest 0.3. S lub SF (ang.sign flag)- flaga znaku. Ustawiana, gdy najstarszy bit wyniku wykonywanej operacji jest równy 1. Zasadniczo ma to znaczenie dla operacji arytmetycznych interpretowanych jako liczby ze znakiem (w kodzie U2).

4. P lub PF (ang.parityflag)- flaga parzystości. Sygnalizuje parzystą lub nieparzystą liczbę jedynek w wyniku (np. w jego najmłodszym bajcie). Dokładna regułaustawiania tej flagi zależy od typu procesora.5. OV lub OF(ang. werflow flag)- flaga przepełnienia. Sygnalizuje przekroczeniezakresu dla operacji arytmetycznych, gdy są interpretowane jako operacje naliczbach ze znakiem zapisanych w kodzie U2. Dokładna reguła ustawiania tejflagi podana jest w podrozdziale6. AC lub AF (ang.auxiliary carry flag)- flaga przeniesienia pomocniczego lub połówkowego. Ustawiana, gdy występuje przeniesienie lub pożyczka z najstarszego bitu pierwszej tetrady wyniku. Istotna przy interpretowaniu wyniku operacji arytmetycznych w kodzie prostym BCD.Czyli reasumując licznik rozkazów - Ten rejestr zawiera adres komórki pamięci, w której przechowywany jest kod rozkazu przeznaczonego do wykonania jako następny.

Licznik programu (skr. PC), inaczej wskaźnik instrukcji (skr. IP-Instruction Pointer) lub licznik rozkazów, jest rejestrem procesora przechowującym informację o tym, w którym obecnie miejscu sekwencji instrukcji znajduje się procesor. W zależności od modelu procesora w rejestrze tym przechowywany jest adres aktualnie wykonywanej lub częściej następnej instrukcji. W tym drugim wypadku licznik programu jest zwiększany zaraz po odebraniu instrukcji i przeniesieniu jej do rejestru instrukcji. Poprzez modyfikację tego rejestru implementuje się skoki, w tym skoki warunkowe, pętle i podprogramy.

Wskaźnik Stosu - Ten rejestr zawiera adres ostatnio zapełnionej komórki stosu (wierzchołek stosu). Stosem nazywamy wyróżniony obszar pamięci używany według reguł:

• informacje zapisuje się na stos do kolejnych komórek, przy czym żadnego adresu nie wolno pominąć,

• odczyt wiadomości odczytuje się w kolejności odwrotnej• informacje są odczytywane z ostatnio zapełnionej komórki,

natomiast zapisujemy do pierwszej wolnej.

Rejestry robocze (pomocnicze) służą do przechowywania danych pomocniczych, które są zazwyczaj drugimi argumentami dla ALU lub do przechowywania wyników operacji cząstkowych. Procesor ma 6 ośmiobitowych rejestrów roboczych ogólnego przeznaczenia: B, C, D, E, H, L. Możemy je odpowiednio grupować w pary tworząc rejestry 16-bitowe: BC, DE, HL. Zadaniem rejestrów 16-bitowych jest adresowanie pamięci mogą być wykorzystywane jako liczniki 16-bitowe.