IA-32

Wprowadzenie do architektury IA-32

IA-32, znana również jako Intel Architecture 32-bit, to 32-bitowy model programowy mikroprocesora opracowany przez firmę Intel. Architektura ta, często określana jako x86-32, jest rozwinięciem modelu programowego rodziny x86, którego początki sięgają lat 80. XX wieku. IA-32 została wprowadzona na rynek w 1985 roku wraz z procesorem Intel 80386 i od tego czasu stała się jednym z najpopularniejszych modeli architektury stosowanych w komputerach osobistych oraz serwerach. Choć w ostatnich latach architektura ta ustępuje miejsca modelom 64-bitowym, takim jak AMD64 i Intel 64 (EM64T), nadal pozostaje ważnym elementem historii informatyki.

Tryby pracy procesorów IA-32

Procesory IA-32 obsługują kilka trybów pracy, które definiują sposób zarządzania pamięcią oraz uprawnienia użytkowników. Podstawowe tryby to:

Tryb rzeczywisty

Tryb rzeczywisty jest zgodny z najstarszymi procesorami rodziny x86, począwszy od Intel 8086. W tym trybie pamięć jest podzielona na segmenty o stałej wielkości wynoszącej 64 KB, a przestrzeń adresowa ogranicza się do 1 MB. Adresowanie odbywa się za pomocą rejestrów segmentowych oraz offsetów. Współczesne procesory działają w tym trybie jedynie do momentu uruchomienia systemu operacyjnego.

Tryb chroniony

W trybie chronionym, który jest kontrolowany przez system operacyjny, pamięć może być organizowana w segmenty dowolnej wielkości. Przestrzeń adresowa w tym trybie wynosi zazwyczaj do 64 GB, a liniowa przestrzeń adresowa do 4 GB. System operacyjny może korzystać zarówno z modelu płaskiego, jak i z segmentacji podobnej do tej w trybie rzeczywistym. Tryb ten umożliwia także obsługę wielozadaniowości oraz ochronę przed nieautoryzowanym dostępem do urządzeń wejścia/wyjścia.

Tryb wirtualny V86

Tryb wirtualny V86 jest variantą trybu chronionego, symulującą tryb rzeczywisty. Pozwala na uruchamianie programów napisanych dla MS-DOS w środowisku współczesnych systemów operacyjnych.

Tryb SMM (System Management Mode)

Tryb SMM jest specjalnym trybem przeznaczonym do zarządzania sprzętem przez systemy operacyjne. Jest on niedostępny dla użytkowników i pozwala na realizację funkcji zarządzających sprzętem na poziomie systemowym.

Rejestry procesorów IA-32

Architektura IA-32 zawiera różne typy rejestrów, które pełnią kluczowe funkcje w działaniach procesora. Można je podzielić na kilka kategorii:

Rejestry ogólnego przeznaczenia

W procesorach IA-32 dostępnych jest osiem 32-bitowych rejestrów ogólnego przeznaczenia:

  • EAX: rejestr akumulacji
  • EBX: rejestr bazowy
  • ECX: rejestr licznika
  • EDX: rejestr danych
  • ESI: indeks źródła
  • EDI: indeks przeznaczenia
  • EBP: wskaźnik bazowy
  • ESP: wskaźnik stosu

Z tych rejestrów można korzystać również jako z rejestrów 16-bitowych oraz 8-bitowych części.

Rejestry koprocesora

Koprocesor arytmetyczny w architekturze IA-32 działa na zasadzie stosu i składa się z ośmiu rejestrów 80-bitowych. Rejestry te są używane do przechowywania liczb zmiennoprzecinkowych, a ich położenie określa się przez odległość od wierzchołka stosu.

Rejestry segmentowe

Sześć 16-bitowych rejestrów segmentowych służy do określania adresu fizycznego w trybach korzystających z segmentacji pamięci oraz jako selektory w trybie chronionym. Obejmują one m.in. rejestry segmentu kodu programu (CS) oraz segmentu danych (DS).

Rejestry specjalnego przeznaczenia

Dodatkowo w architekturze IA-32 występują różne inne rejestry, takie jak EFLAGS (rejestr stanu), EIP (licznik programu) czy rejestry technologii MMX i SSE.

Wykonywanie programów w architekturze IA-32

Zestaw instrukcji procesorów IA-32 obejmuje kilkaset poleceń, które są wykorzystywane przez programistów do tworzenia aplikacji. Instrukcje te można podzielić na kilka grup:

  • Instrukcje przesyłania danych
  • Instrukcje kontroli przepływu: porównania, skoki, pętle.
  • Instrukcje arytmetyczne: zarówno stałoprzecinkowe, jak i zmiennoprzecinkowe.
  • Instrukcje operacji logicznych oraz bitowych.
  • Inne instrukcje.

Cykle rozkazowe i kodowanie instrukcji

Cykle rozkazowe są podstawowym mechanizmem realizacji instruktora przez procesor. Na cykl rozkazowy składają się etapy pobierania rozkazu z pamięci, dekodowania go oraz obliczania adresu efektywnego argumentu.

Kodowanie instrukcji odbywa się za pomocą kompilatorów lub assemblerów i wymaga zgodności z zasadami kodowania architektury IA-32. Rozkazy są zmiennej długości i składają się z prefiksów instrukcji oraz kodu operacji.

Następcy architektury IA-32 i


Artykuł sporządzony na podstawie: Wikipedia (PL).

Dodaj komentarz