Adresowanie
Pamięć to zbiór komórek o jednakowych rozmiarach
Każda komórka zawiera jednostkę informacyjną zwaną słowem
Każda komórka posiada unikatowy numer - adres.
Sposób przydzielania indeksów (adresów) jest cechą architektury.
Stosowane są dwie konwencje numeracji bitów i bajtów:
- ważniejszy niższy (big endian) - słowo (lub bit) zawierające bardziej znaczącą część informacji posiada niższy numer porządkowy (adres)
- ważniejszy wyższy (little endian) - słowo (lub bit) zawierajáce bardziej znaczącą część informacji posiada wyższy numer porządkowy
INTEL 80x86 - little endian, PowerPC big endian, MC 680x0 bajty big endian a bity little endian.
Rozdzielczość adresowanie
- Rozdzielczość adresowania jest cechą architektury mającą wpływ na organizację kompilatora. Podstawową jednostką informacji jest słowo mmaszynowe. Dane systemowe są tworzone w formacie zgodnm z rozmiarem słowa maszynowego lub stanowiącym jego wielokrotność.
- Szerokość magistrali systemowej musi umożliwiać co najmniej przesłana do jednego słowa maszynowego w jednym cyklu pamięi.
- W przypadku gdy rozdzielczość adresowania jest większa niż rozmiar słowa lub szerokość magistrali jest wielokrotnością podstawowej jednostki adresowej powstaje problem wpasowania danych w struktury pamięci. (Problem ten powinien być rozwiązany podczas kompilacji programu).
- Umieszczenie danych o rozmiarze jednostkowym równym rozmiarowi komórki pamięi jest dowolne, jeśli słowo zajmuje dwie komórki pamięci to adres słowa powinien być parzysty, cztery komórki to adres podzielny przez cztery.
Przestrzenie adresowe
- Ze względu na sposób adresowania wyróżnia się następujące przestrzenie adresowe:
- obszar roboczy - rejestry procesora
- pamięć główna
- przestrzeń sterowania
- stos
- przestrzeń wejścia/wyjścia
- identyfikator przychpdzącego przerwania
Odwzorowanie przestrzeni adresowych
- ROZDZIELNE PRZESTRZENIE ADRESOWE - używa się różnych rozkawów dla każdej z przestrzeni
- JEDNOLITA PRZESTRZEŃ ADRESOWA - te same rozkazy, natomiast w zależności od adresu można adresować różne urządzenia lub różne fragmenty pamięci
Tryby adresowania
- natychmiastowe
- bezpośrednie
- pośrednie
- rejestrowe
- rejestrowe pośrednie
- z przesuniéciem
- stosowe
Adresowanie natychmiastowe
- argumenr jest obecny w rozkazie
- ARGUMENT = A
np. ADD 5
- żadne odniesienie do pamięci (poza pobraniem rozkazu) nie jest potrzebne do uzyskania argumentu
- szybkie
- rozmiar liczb jest ograniczony do rozmiaru pola adresowego
adresowanie bezpośrednie
- pole adresowe zawiera efektywny adres argumentu
- adres efektywny (EA) = pole adresowe (A)
np. ADD A
- wymaga tylko jednego odniesienia do pamięci
- nie wymaga żadnych obliczeń
- umożliwia obsługę tylko ograniczonej przestrzeni aresowej
Adresowanie pośrednie
- zwykle długość pola adresowego jest mniejsza niż długość słowa, co ogranicza zakres adresów
- pole adresowe odnosi się do słowa w pamięci, które z kolei zawiera pełnej długoßci adres argumentu
- EA = (A)
- nawiasy oznaczają zawartość
- duża dostępna przestrzeń adresowa
- wymaga dwóch odniesień do pamięci
- otrzymanie adresu i uzyskanie samej warości
Adresowanie rejestrowe
- pole adresowe odnosi się do rejestru (a nie jak poprzednio do adresu w pamięci głównej)
- EA = R
- ograniczone liczbą rejestrów
- niewielkie pole adresowe
- nie są wymagane odniesienia do pamięci
- bardzo szybkie (czas dostępu do rejestru procesora jest znacznie mniejszy niż czas dostępu do pamiéci głównej)
Adresowanie pośrednie rejestrowe
- podobne do adresowania pośredniego
- EA=(R)
- pole adrtesowe odnosi się do rejestru, który z kolei zawiera w pełnej długości adresu agrumentu
- duża przestrzeń adresowa
- jedno odniesienie do pamięci mniej niż przy adresowaniu pośrednim
Adresowanie z przesuniéciem
- łączy możliwości adresowania bezpośredniego oraz pośredniego adresowania rejestrowego
- EA=A+(R)
- pole adresowe zawiera dwie wartości
- typy adresowania z przesunięciem:
- względne - rejestrem domyślnym jest licznik programu (PC)
- z rejestrem podstawowym - rejestr zawiera adres pamiéci a pole adresowe przesunięcie
- indeksowanie - pole adresowe odnosi się do adresu w pamiéci głównej a rejestr zawiera dodatnie przesuniécie do tego adresu
Tryby adresowania INTEL
- W architekturze Intel 80x86 zaadresowanie danej w pamiéci wymaga dwóch wskaźników: identyfikatora spójnego bloku pamięci zwanego segmentem i adresu względnego wewnątrz segmentu o wartoßci nie przekraczajácej rozmiaru segmentu
- Najbardziej złożonym trybem adresowania spotykanym w procesorach rodziny Intel 80x86 jest dwuwskaźnikowe skalowalne adresowanie bazowo-indeksowe z przemieszczeniem
LA=([wskaźnik segmentu])+(baza)+(indeks)*skala+przemieszczenie
Nawias[...] ozacza adres pośredni, a nawias(...) oznacza, że składowa adresu umieszczona jest w rejestrze procesora
W trybie rzeczywistym - to co da się zaadresować przy ustalonym segmencie a zmieniającym się offsecie nazywamy stroną pamięci.
chomikSGHowy