You are on page 1of 9

Architektura komputera (computer achitecture)

Buchhdz zaproponował pojęcie „architektura komputera” w opisie komputera


Stretch (IBM 7201), a upowszechnił Andahl

Architektura komputera to:


- specyfikacja funkcjonalnych cech komputera opisanych listą rozkazów i
wskazaniem obiektu ich oddziaływania
- całokształt struktury i zachowania systemu komputerowego w kontekście
logicznych aspektów implementacyjnych, z punktu widzenia programisty.

Na architekturę komputerów składają się:


1) zestaw i formaty rozkazów
2) kody operacji
3) typy danych,
4) liczba i typy rejestrów,
5) typy adresowania,
6) metody dostępu: a) do pamięci operacyjnej, b) do pamięci masowych, itp.
7) mechanizmy wejścia / wyjścia
Architektura komputera ma bezpośredni wpływ na sposób wykonania przez nie
programów.

RÓŻNICE ARCHITEKTÓR
Architektury różnią się między sobą następującymi cechami
1) Sposobem przechowywania danych w CPU, (dane mogą byś przechowywane
na stosie lub w rejestrach)
2) liczbą operandów, które trzeba jawnie określić dla każdej instrukcji, najczęściej
jest to 0, 1, 2 lub 3
3) Położeniem operandów
4) Instrukcjami (nie tylko ich rodzajem, ale też tym, które instrukcje mogą
odwoływać się do pamięci, a które nie)
Instrukcje możemy sklasyfikować do nast. kategorii
rejestr – rejestr, rejestr - pamięć oraz pamięć – pamięć , a ich nazwy odnoszą
się do dozwolonych kombinacji operandów dla danej instrukcji.
5) rodzajem i rozmiarami operandów (operandy mogą być adresami , liczbami a
nawet znakami)
PODZIAŁ ARCHITEKTÓRY ZE WZG NA SPOSÓB PRZECH. DANYCH
ze wzg. na sp. przech. danych występują zasadnicze różnice między poszcz. Arch.,
dostępne są 3 możliwości
1) Architektura stosowa –do wykonywania instrukcji wykorzystywane są stosy,
na wierzchołkach których znajdują się operandy. Komputer o takiej architekturze
charakteryzuje się dobrym stopniem upakowania kodu i prostymi sposobami
szacowania wartości wyrażeń to do elementów stosu nie możemy odwoływać się
w sposób wybiórczy, co utrudnia generowanie wydajnego kodu
2) Architektura akumulatorowa jeden operand znajduje się zawsze w
akumulatorze, co ogranicza wewnętrzną złożoność komputera i pozwala na
stosowanie bardzo krótkich instrukcji. Jednak ponieważ akumulator przechowuje
dane jedynie tymczasowo , generowany jest bardzo duży ruch do i z pamięci
3) Architektura rejestrów ogólnego przeznaczenia (GPR) model najczęściej
stosowany we WSP. Komputerach.
- rejestry są szybsze od pamięci, łatwiej obsł. przez kompilatory i b. wydajne
- nie bez znaczenia są również ceny sprzętu (bardzo spadły), co pozwala stosować
dużą liczbę rejestrów przy minimalnym koszcie

Jeżeli dostęp do pamięci jest szybki, dobrym rozwiązaniem jest architektura


stosowa, w przeciwnym razie często lepiej jest wykorzystać rejestry
Na przestrzeni ostatnich 10 lat większość komputerów bardzo intensywnie
KOMPUTER – urządzenie zdolne do przetwarzania informacji w celu uzyskania
wykorzystywała rejestry
pożądanego wyniku
Ze wzg. Na to, że wszystkim operandom trzeba nadawać nazwy, wykorzystywania
MIKROKOMPUTER – jest to komputer, w którym funkcję jednostki centralnej
rejestrów narzuca konieczność stosowania długich instrukcji, co wydłuża czas ich
pełni mikroprocesor
pobierania i dekodowania (a należy pamiętać, ze jednym z najważniejszych celów
CPU (CENTRAL PROCESSING UNIT)
projektowania architektury ISA jest to aby instrukcje były jak najkrótsze)
Przyjmuje się, że mikrokomputer jest systemem zbudowanym z mikroprocesora,
Architektury rejestrów ogólnego przeznaczenia możemy dalej podzielić na 3
pamięci wewnętrznej i układów wejścia/wyjścia (wg. Teorii J. von Neumana)
kategorie (w zależności od tego, gdzie są w nich przechowywane operandy)
Wszystkie elementy systemu połączone są ze sobą za pomocą magistrali
1) pamięć-pamięć dwa lub trzy operandy mogą być przechowywane w pamięci,
systemowej
co pozwala na wykonywania instrukcji bez konieczności umieszczania operandów
w rejestrach (VAX firmy Digital Equipement)
2) rejestr-pamięć to rozwiązanie mieszane, w którym przynajmniej jedne operand
musi znajdować się w rejestrze a jeden w pamięci
3) „wczytaj- zapisz” wymagają przeniesienia do rejestrów wszystkich danych, na
których mają być wykonywane operacje (Intel, Motorola, SPARC, MIPS, ALPHA
i PowerPC)
Większość współczesnych architektur jest oparta na rejestrach ogólnego
przeznaczenia, a cechy tych arch. Pozwalają podzielić je na dwie kategorie
1) liczba operandów 2) sposób ich adresowania
Najczęściej stosuje się 2 lub 3 operandy ale może także występować tylko 1 lub 0
MAGISTRALA SYSTEMOWA jest to zestaw połączeń pomiędzy elementami mikroprogramów , realizujących rozkazy programu)
systemu komputerowego Mikroprocesor podobnie jak każda jednostka centralna pracuje w sposób
Zadaniem magistrali jest zapewnienie komunikacji między współpracującymi sekwencyjny.
KLASYFIKACJA MIKROPROCESORÓW
układami mikrokomputera
mikroprocesory są klasyfikowane według trzech kryteriów:
Magistrala systemowa podzielona jest najczęściej na 3 magistrale częściowe 1) architektura wewnętrzna 2) długość słowa maszynowego 3) technologia
1) magistrala adresowa *PMOS – MOS z izolowana bramka P, ten tranzystor pracuje z prądem
2) magistrala danych dziurowym
3) magistrala sterująca *Technologia „N” – nadmiar elektronów
MAGISTRALA ADRESOWA * CMOS – technologia aktualnie wykorzystywana przez współczesne procesory
- przyłączona jest do licznika rozkazów i licznika danych *OLED – Organiczne ekrany LED
* Tranzystory diamentowe – stworzone przez amerykańskich inżynierów po to by
- przeznaczona jest do przekazywania adresów od mikroprocesora do pamięci i od
tranzystory wytrzymywały bardzo wysokie i niskie temperatury, stworzone na
mikroprocesora do urządzeń peryferyjnych potrzeby amerykańskiego programu rozwoju kosmicznego. Tranzystory
Ponieważ jedynym źródłem adresów jest mikroprocesor to magistrala ta jest diamentowe wytrzymują temperaturę od -400 do +400 C
zwykle jednokierunkowa MIKROPROCESORY RODZINA x86 IA32 IA64
Potrzeba stosowania dwukierunkowej magistrali adresowej występuje w Mikroprocesor tej rodziny składa się z 4 współpracujących zespołów:
przypadku bardzo rozbudowanych typów mikroprocesorów, wyposażonych w - EU – zespołu wykonawczego – jednostki wykonawczej (execution unit),
wewnętrzną pamięć notatnikową (cache memory) wykonuje instrukcje mikrokodu
- BU – zespołu łącza z magistr. systemową (bus unit) umożliwia dostęp procesora
Jeżeli adres znajdujący się na magistrali adresowej pochodzi z
do pamięci, a jednocześnie dla innych jednostek dostęp do przestrzeni we/wy
- licznika rozkazów, to (po odebraniu) wpisywany jest do rejestru rozkazów - AU – zespół adresacji (adres unit), tworzy adresy fizyczne i wirtualne
- licznika danych , to (odebrane dane) wpisywane są do akumulatora (w arch. - IU – zespół pobierania i dekodowania instrukcji (instruction unit) – dekoduje
Akumulatorowej rejestru AX) lub do jednego z rejestrów uniwersalnych kod wynikowy, z jednostki wstępnego pobrania, do mikrokodu
MAGISTRALA DANYCH Zespół wykonawczy – EU zawiera:
- połączona jest z akumulatorem (rejestrem AX), pozostałymi rejestrami - ALU – blok arytmetyczno-logiczny (arithmetic logic unit)
- FR – rejestr znaczników (flag register)
uniwersalnymi i rejestrem rozkazów
- GR – blok rejestrów ogólnego przeznaczenia (general register)
- przeznaczona jest do przekazywania danych (np. pamięć-procesor, procesor- - IR – rejestr indeksowy (indexing register)
pamięć) i rozkazów (np. od procesora do urządzeń zewnętrznych) - CS blok sterowania (control system)
Dla umożliwienia przekazywania danych w obydwu kierunkach magistrala ta z Blok ALU dołączony jest do magistrali wewnętrznej mikroprocesora
reguły jest dwukierunkowa Z magistrali tej pobierane są argumenty operacji, a także wysyłane jest na nią
MAGISTRALA STERUJĄCA wynik tej operacji
-połączona jest z układem sterowania mikroprocesora Na magistrale też może byś wysłana zawartość rejestru znaczników
Procesor, a ściślej ALU, pracuje jedynie na danych zgromadzonych w rejestrach
-przeznaczona jest do przesyłania sygnałów:
Aby procesor (ściślej-ALU) wykonał jakieś działanie należy
a) sterujących pamięcią, (zapis, odczyt) 1) załadować rejestry 2) odczytać znajdujący się w nich wynik
b) urządzeniami peryferyjnymi (wejście, wyjście)
- przeznaczona jest również do przesyłania sygnałów specjalnych: MIKROPROCESOR x86 – REJESTRY
a) wykorzystywanych w operacjach obsługi przerwań Rejestr – jest to szereg komórek pamięci , które znajdują się w obudowie
b) wykorzystywanych w operacjach bezpośredniego dostępu do pamięci procesora, grupy tych komórek mają ściśle określone nazwy i przeznaczenie.
Zawiera też sygnały oddziałujące na stan mikroprocesora Procesory x86 posiadają rejestry podzielone na następujące kategorie
- rejestry ogólnego przeznaczenia
Część sygnałów magistrali to sygnały wyjściowe mikroprocesora a część to
- rejestry segmentowe
sygnały wejściowe. - rejestry flag
Funkcje magistrali adresowej i danych w różnych typach mikroprocesorów są do - wskaźniki instrukcji
siebie podobne. - rejestry systemowe (adresowe)
W niektórych praktycznych rozwiązaniach mikroprocesorów, magistrale adresowa - rejestry sterowania
i danych połączone są w jedną. - rejestry przygotowania (ustawiania)
- rejestry testowania
Adresy i dane muszą być wtedy przekazywane w różnych okresach czasu, a o
- rejestry specyficzne (zależne od konkretnego modelu procesora)
rodzaju informacji znajdującej się aktualnie na magistrali decydują sygnały Wymienione powyżej rejestry odnoszą się do widzialnej (dla programów
sterujące na magistrali sterowania tzw. Kwalifikatory. użytkowych – dla programisty) części architektury x86 i przedstawiają sobą
W przypadku połączenia magistrali adresowej i danych konieczne jest stosowanie rozszerzenie zestawu rejestrów 16-bitowych procesorów 8086 i 286.
układów rozdzielających. Podstawowe rejestry procesora architektury IA-32 i IA-64 z którymi pracują
Połączenie magistrali adresowej i danych jest najczęściej wynikiem ograniczeń programy użytkowe pokazuje rys 2:
technologicznych, dotyczących liczby końcówek na obudowie US procesora
Stosowanie magistralowej struktury mikrokomputera pozawala na:
- uzyskanie prostych i przejrzystych układów logicznych
- na dołączania praktycznie dowolnej liczby urządzeń peryferyjnych.

PROCESOR – CPU jest to urządzenie cyfrowe przeznaczone do przetwarzania


informacji w sposób określony przez użytkownika.
MIKROPROCESOR zwykło się nazywać układ odpowiadający funkcjonalnie
jednostce centralnej komputera CPU (central processing unit) , zgrupowanej w
jednym układzie scalonym.
Mikroprocesor (zgodnie z rolą jednostki centralnej w systemie komputerowym)
musi wykonywać następujące funkcje:
1) pobieranie rozkazu z pamięci
2) pobieranie danych z pamięci lub urządzenia wejściowego,
3) wykonywanie operacji arytmetyczno-logicznej lub sterującej, określonej przez
rozkaz:
4) zapis wyniku w pamięci lub przesłanie go do urządzenia wyjściowego.
Aby wykonanie tych funkcji było możliwe, każdy mikroprocesor musi zawierać
co najmniej następujące bloki funkcjonalne.
1) jednostkę arytmetyczno-logiczną (Arithmetci Logic Unit) – ALU
2) akumulator – ACC
3) licznik rozkazów – instruction pointer (Programm Counter)– IP (PC)
4) licznik danych – (Data Counter) – DC
5) rejestr rozkazów – (Instruction Register) – IR
6) układ sterowania (Control Unit) –CU
Wewnętrzna struktura większości mikroprocesorów charakteryzuje się dwoma
następującymi cechami:
1) wymiana informacji między blokami funkcjonalnymi mikroprocesora odbywa
się za pomocą magistrali wewnętrznej
2) sterowanie wymianą informacji między blokami funkcjonalnymi odbywa się
metodą mikroprogramową (układ sterowania zawiera z reguły pamięć
1 –gdy suma modulo 2 przeniesienia z najbardziej znaczącej pozycji i z
przedostatniej jest równa 1 czyli jest przekroczenie zakresu U2
- IOPL – znacznik ( 2-bity) poziomu uprzywilejowania
- NT – znacznik zadania zagnieżdżonego (nested task)
- RF – znacznik wznowienia (resume flag) – wykorzystuje się razem z rejestrami
punktów wytrzymania
- VM – znacznik trybu wirtualnego 8086 (virtual 8086 mode) – w trycie
chronionym włącza się tryb procesora wirtualnego 8086
0 – Instrukcja PUSHF ten bit zawsze zeruje
1 – Można ustawić tylko w trybie chronionym i instrukcja IRET dla
zerowego poziomu przywileju (IOPL =0) albo przełączeniem zadań na
dowolnym poziomie uprzywilejowania (IOPL=/0)
Na bit nie ma wpływu instrukcja POPF ( jego wartość równa 1 może być
zachowana tylko w rejestrze BFFLAGS zachowywanym przy przerwaniach
przełączaniu zadań albo na przejściu do SMM)
Próba wykorzystania uprzywilejowanych instrukcji w tym trybie wywoła wyjątek
(Exception) #GP
- AC – flaga sprawdzania wyrównania ( Aligment Flag)
Przy wykonywaniu z uprzywilejowaniem 3 w przypadku zwrócenia się do
operanda który nie jest wyrównywany do odpowiedniej granicy (2,4,8 bajtów) i
przy ustawionej fladze AC wystąpi wyjątek #AC z zerowym kodem bledu Na
W 16-bit procesorach rejestry ogólnego przeznaczenia – AX, BX, CX, DX poziomach przywileju 0,1,2 kontrola wyrównywania nie zachodzi (486+)
składają się z dwóch 8-bit połówek, do których można niezależnie zwracać się za - VIF – flaga przerwania wirtualnego ( Virtual Interrupt Flag)
pomocą symbolicznych nazw – AH, BH, CH, DH (starsze bajty – High) i AL., Wirtualna wersja flagi IF (zezwolenie przerwania dla wielozadaniowych maszyn
BL, CL, DL (młodsze bajty – Low) (P5+)
Rejestry wskaźnikowe: - VIP – flaga nie obsłużonego przerwania wirtualnego (Virtual Intrrupt Peding)
- SP – (stack pointer) wskaźnik stosu (P5+)
- BP – (base pointer) rejestr bazowy - ID znacznik identyfikacji procesora ( ID flag) CPUID (P5+)
Rejestry indeksowe:
- SI (Skurce index) indeks źródła
- DI – (destination index) indeks przeznaczenia
Rejestry wskaźnikowe i indeksowe dopuszczają tylko 16-bitowe odwołania
Rejestr instrukcji:
- IP ( Instruction Protocol) – wskaźnik licznik instrukcji adres bieżącej instrukcji
Rejestry mogą być adresowane przez instrukcje jawnie: w wielu instrukcjach
rozkazach, dopuszczalne jest niejawne wykorzystanie rejestrów
- AX – mnożenie, dzielnie wprowadzanie i wyprowadzanie słowa
* AL - mnożenie, dzielenie, wprowadzanie i wyprowadzanie bajta (XLAT)
*AH – mnożenie i dzielenie bajta
- BX - translacja
- CX – licznik cykli i wskaźnik długości operacji łańcuchowych
*CL – przesuniecie ze wskazaniem zmiennej
- DX – mnożenie i dzielenie słowa wejście i wyjście słowa w adresach pośredniej
odroczonej (deffered addresss)
- SP – operacje na stosie
- SL, DI - operacje na łańcuchach
W procesorach IA-32 wszystkie rejestry rozszerzono do 32 bitów i do ich nazw
dodano przedrostek E (extender – rozszerzony)
W procesorach IA-64 wszystkie rejestry rozszerzono do 64 bitów i do ich nazwy
dodano przedrostek R
REJESTR FLAG
Jest to 32 bitowy rejestr (rys3) którego kolejne bity są ustawiane w zależności od
zaistnienia jakiegoś zjawiska umożliwia kontrole pracy procesora
Bity 0-15, określone dla 8086 i 80286 zachowują znaczenie dla wszystkich
REJESTRY STERUJĄCE CR0 CR1 CR2 CR3 przechowują flagi stanu
generacji
procesora, ogólnie dla wszystkich zadań (rys4)
W porównaniu z 286 pojawiły się nowe flagi VM i RF a wiele flag pojawiło się
CR0 – zapewnia ogólne sterowanie trybami pracy procesora
wraz z procesorami 4-5-6 i następnej generacji
Przeznaczenie bitów rejestru CR0
Znaczenie bitów tego rejestru jest następujące
- PE – tryb chroniony ( Protection Enable)
- CF – znacznik przeniesienia (Carry Flag)
1 – Ustawianie znacznika powoduje przełączenie procesora w tryb
- PF – znacznik parzystości (Parity Flag)
chroniony instrukcją LMSW lub LOAD CR0
0 - gdy liczba jedynek wyniku operacji jest nieparzysta
0 – praca w trybie rzeczywistym powrót do trybu rzeczywistego
1 - gdy jest parzysta
(zrzucenie flagi) możliwy jest tylko instrukcja LOAD CR0 ???
- AF – przeniesienie pomocnicze (Auxilarry Caryy) jest ustawiane gdy powstaje
- MP – monitoring koprocesora ( Monitor processor Extension)
przeniesienia miedzy tetradami tj: czwórkami bitów mniej znaczącego bajta
1 – ustawianie znacznika pozwala wywołać wyjątek #NM dla
- ZF – znacznik zera
pierwszej oczekującej instrukcji FPU po przełączeniu zadań przy
0 – wynik operacji rożny od zera
TS=1 w celu zachowania i odtworzenia kontekstu procesora
1 – wynik zerowy
- EM – emulacja kooprocesrorowa (Procesor Extsnsion Emulate)
- SF – znacznik znaku
1 – ustawianie znacznika pozwala wywołać wyjątek #NM (albo
0 - liczba dodatnia
przerwanie od koprocesora) przy każdym rozkazie, odnoszącym się do
1 - liczba ujemna
kooprocesora co pozwala w sposób przezroczysty realizować
- TF znacznik pułapki (trap flag) umożliwia prace krokowa
programowa emulacje kooprocesora
Wskaźnik może być ustawiany w słowie stanu programu przez zapis jedynki na
- TS - flaga przełączania zadań (task Switch)
pozycji odpowiedniego bitu, można to zrobić rozkazem push PSW, wpisaniem 1 i
1 – ustawiana jest automatycznie przy przełączaniu zadań
rozkazem pop PSW
0 – zerujemy (zrzucamy) instrukcje
- ET – identyfikator wsparcia instrukcji koprocesora (extension type) (od p+
Rejsstr flag – EFLAGS rys znalesc w necie
zarezerwowany)
x- flaga systemowa, s – flaga stanu, c- flaga sterowania
- NE – raportowanie wykrycia błędu numerycznego (Numeric Error)
- IF – znacznik zezwolenia na przyjmowanie przerwań ( Interrupt Flag)
1 – funkcjonuje mechanizm raportowania błędów numerycznych
0 - zakaz przyjmowania przerwań z INT
zmiennoprzecinkowych
1 - zezwolenie na przyjmowane przerwań z INT
0 – a) wejście procesora IGNE# jest aktywne, bledy numeryczne są
- DF – znacznik kierunku ( Direction Flag)
ignorowane b) wejście procesora IGNE# nie jest aktywne, bledy
0 – Zerowany rozkazem CLD
numeryczne wywołują zatrzymanie procesora, do czasu nadejścia
1 – Ustawiany rozkazem STD
przerwania
Wskazuje czy zawartość rejestrów SI i DI maja być zwiększone o 1 (increment)
- NW – zakaz bezpośredniego zapisu i cykli anulowania pamięci cache (not
czy zmniejszone o 1 (decresment) podczas wykonywania operacji na ciągach
writethrought)
- OF – nadmiar, przepełnienie (Overflow Flag)
1 – uniemożliwia cacheowania
0 – gdy suma modulo 2 przeniesienia z najbardziej znaczącej pozycji i
0 – możliwe są operacje cacheowania
z przedostatniej jest równa 0 czyli nie ma przekroczenia w kodzie U2
- CD – zakaz zapełniania (zapisywania) pamięci cache (cache disabled) RODZAJE ROZKAZÓW
1 - uniemożliwienie zapisu, ale istnieje możliwość odczytu wcześniej Mikroprocesory x86 zawierają rozkazy typowe dla ich poprzedników 8 bitowych
zapisanych linijek (8080 i 8085) oraz szereg dodatkowych jak:
0 – możliwe są operacje zapisu
1) mnożenie 2) dzielenie binarne ze znakiem 3) dzielenie binarne bez znaku 4)
- WP – określenie ochrony strony pamięci (write Protect)
1 – może być dokonywany zapis w trybie supervisor dzielenie binarne w kodzie BCD 5) operacje przesyłania 6) porównanie tablic 7)
0 – może być dokonywany tylko odczyt w trybie supervisor badanie wartości określonych bitów operandów 8) programowe generowanie
- AM – kontrola wyrównywania (aligment Mask) przerwań 9) instrukcje ułatwiające programowanie układów wieloprocesorowych
1 – zezwolenie na kontrole wyrównywania ale pod warunkiem ze flagi W procesorach x86 prawie każdy rozkaz dotyczy zarówno bajtów jak i słów 16-to
w rejestrze flag SA ustawione AC-1 a poziom uprzywilejowania CPL-3 , 32, i 64 bitowych.
(tryb użytkowania) Długość rozkazu może wynosić od 1 do 15 bajtów
0 brak zezwolenia na kontrolę wyrównywania
Rozkaz może być: a ) bezargumentowy b) jedno , dwu lub wielo argumentowy,
- PG – włączenie mechanizmu stronicowanej adresacji pamięci
1 – stronicowanie jest Możliwe ale jest CR3 (zwany rejestrem ale tylko jeden z argumentów może być pobrany z pamięci operacyjnej
bazowym katalogu stron PDBP) zawiera 20 najbardziej znaczących LISTA ROZKAZÓW
bitów adresu katalogu stron (1 poziom tablicy stron) Na każdym poziomie definicji architektury komputera elementami specyfikacji
Katalog stron musi być wyrównany do granicy stron tak aby 12(najmłodszych) każdego dokumentowanego rozkazu są:
bitów tego rejestru nie było używane jako bity adresowe - składnia (syntax) – formalna postać zapisu działania i argumentów)
0 – stronicowanie nie jest możliwe gdy wygenerowany wyjątek , rejestr - funkcja (operation) – zapis działania w notacji symbolicznej
CR2 zawiera 32 bitowy adres liniowych tego wyjątku
- cechy (attributes) – słowny opis wykonywanego działania
Rejestr CR0 jest rozszerzeniem rejestru MSW procesora 286 w którym były
określone tylko znaczniki PE, MP, EM, i TS - kody warunków (conditio codes) status wykonania wpisany do rejestru stanu
CR1- rejestr nie jest wykorzystywany - format kodu (code strcture) wykaz i opis pól słowa kodu maszynowego
CR2 – chroni 32 bitowe liniowy adres uszkodzonej strony pamięci Najniższa warstwa abstrakcyjnego opisu komputera to architektura listy
CR3- chroni fizyczny adres bazowy tablicy katalogu stron rozkazów (instruction set architecture, ISA)
- PCD 4-bit zakaz cacheowania strony ISA – obejmuje ona specyfikacje rozkazów na poziomie kodu maszynowego i
- PWT 3-bit steruje zapisem do pamięci cache stosujący metodę Write-trough.
sposób identyfikacji (adresowania) danych
CR4 - zawiera bity dotyczące poszczególnych rozszerzeń arch. procesorów P+
Znaczenie poszczególnych bitów Odniesieniem opisu funkcjonalnego jest model programowy procesora, zwany tez
- VME umożliwia wykorzystanie flagi przerwania wirtualnego w rejestrze architekturą procesora
EFLAGS Obligatoryjnym elementem składni rozkazu jest mnemonik – symboliczna nazwa
1 – umożliwia wykorzystanie wirtualnej flagi przerwań w trybie V86 działania , która jest akronimem lub skrótem słowa języka angielskiego.
co pozwala zwiększyć przepustowość poprzez zmniejszenie ilości typowe mnemoniki stosowane w opisie architektury:
dodatkowych wywołań maszyn wirtualnych add/sub(dodaj, odejmij) ; and/Or/xor/(logiczne iloczyn/suma/suma wyłączająca)
- PVI – (protect-mode virtual interrupts)
; cmp,cm(porównaj) ; mul,mpy(pomnóż); div(podziel);
1 – umożliwia wykorzystanie wirtualnej flagi przerwań w trybie
chronionym inc/Dec(zwiększ/zmniejsz); shr/shl(przesuń w prawo/lewo) ; mov,move(prześlij)
- TSD – (time Stamp disable) ; id/st(pobierz/zapisz) ; bce/jce(wykonaj warunkowo(rozgałęzienie)) ;
1 - przekształcenie instrukcji RDTSC w uprzywilejowana call,jsr(wywołaj procedure)
- DE - ( Debuging Extensionm) W dokumentacji rozkazu po określeniu składni następuje definicja funkcji, którą
1 – umożliwia rozszerzenie możliwości debugowania wykonuje oraz sposobu tworzenia wyniku.
- PSE - rozszerzenie rozmiaru stronicy Używanych jest kilka standardów notacji rozkazów i zapisu programu w języku
1 – zezwala na istnienie o rozmiarze 4 MB
asemblera, np. firma Intel stosuje następującą składnie:
0 - zezwala na istnienie o rozmiarze 4 KB
- PAE – rozszerzenie adresu fizycznego MNEMONIK {{typ PTR) argument docelowy}{typ PTR} argument źródłowy
1 - zezwala na istnienie stronicy o rozmiarze 2 MB 36 bitowa adresacja Rozmiar operandów rejestrowych jest implikowany nazwą lub podany jawnie
0 - zezwala na istnienie o rozmiarze 4 KB przez wskaźnik rozmiaru {typ PTR}
- MCE – (machine-chcek enable) Adres argumentu w pamięci określa algebraiczna formuła w nawiasach
1 – umożliwia kontroli sprzętowej wytworzenie wyjątku #MC prze prostokątnych , podająca sposób jego wyliczenia na podstawie składowych
błąd maszynowy P+
Opcjonalnie adres może poprzedzony wskaźnikiem segmentu jeśli nie odnosi się
- PGE – rozwiązanie globalności w stronicowej translacji adresu
1 – po rozkazie MOV CR3 w TLB czyszczone SA tylko wejścia z do segmentu domniemanego przypisanego trybowi adresowania
nieustawionym bitem globalności G(P6+ Instrukcje procesora klasyfikuje się według liczby argumentów na
- PCE – monitorowanie wydajności licznika - bezadresowe (zero adresowe)
1 – umożliwia odwołanie do licznika zdarzeń w dowolnym poziomie - jednoadresowe
uprzywilejowania - półtora
- OSFXSR – flaga wykorzystania instrukcji FXSAVE/FXRSTOP dla szybkiego - wieloadresowe
zachowania i przywracania stanu FPU/MMX/SSE przy przełączaniu kontekstu
Terminy te są też używane do określenia typu architektury oznaczają wówczas
1 – może być ustawiona przez system operacyjny jeśli on te instrukcje
wykorzystuje a procesor wspiera największą dowolną liczbę operandów działań
Flaga wsparcia instrukcji bit FXSR (EDX 24) po wywołaniu CPUID(1) (P6+) Instrukcje bezadresowe – są zwykle używane do sterowania działaniem komputera
0 – przy inicjalizacji flaga jest zrzucana(zerowana) a ich implikowanymi argumentami są często domniemane rejestry procesora
- OSXMMEEXCPT – flaga wsparcia systemem operacyjnym wyjątków Instrukcje jednoadresowe opisują działania w których albo jest używane jeden
pochodzących od bloku XMM (instrukcji zmiennoprzecinkowych SIMD) argument albo takie w których inne argumenty są implikowane
taką postać mają także instrukcje realizowane w architekturze akumulatorowej
ROZKAZY
Instrukcje wieloadresowe opisują większość działań arytmetycznych i logicznych
Rozkaz –jest to uporządkowana sekwencja kodów operacji i wskaźników
argumentów (operandów), tworząca program, jest także sekwencja danych – szczególnym rodzajem instrukcji wieloadresowych są instrukcje półtora adresowe
danych specjalnych, ale mimo wszystko danych. , w których jeden z dwóch argumentów musi być w rejestrze procesora, wynik zaś
Reguły określające czy dany zbiór bitów ma być uznany za rozkaz jeśli jest tworzony jest umieszczany w lokacji zajmowanej przez jeden z
mikrokomputera są następujące: argumentów
1. każdy rozkaz musi być jednoznacznym zestawem bitów a jednoznacznej PRZYKŁADY ROZKAZÓW Z LIZTY ROZKAZÓW PROCESORÓW P+
interpretacji. Każdy z tych zestawów musi mieć tylko jedno znaczenie i każdemu
- rozkazy bezargumentowe : NOP
znaczeniu musi odpowiadać tylko jeden zestaw bitów
2. Kod operacji musi być umieszczony z lewej strony adresów argumentów. - rozkazy 1 argumentowe : INC arg docelowy
Dane w mikrokomputerze istnieją fizycznie jako zbiór bajtów w pamięci a - rozkazy 2 argumentowe : ADD arg docelowy , argument źródłowy
logicznie jako cześć systemu mikrokomputerowego - rozkazy 3 argumentowe : SHLD arg 2 docelowy, arg 1 docelowy arg źródłowy
Należy tu podkreślić ze pamięć jest bierna. Argumenty rozkazów mogą mieć różny zapis symboliczny zależnie od trybu
- Jest w stanie przechowywać zbiór bajtów reprezentujących informacje. adresowania
- Nie może spowodować zmiany tej informacji Generalnie argumentem rozkazu może być liczba zawarta w rozkazie , rejestrze
Pamięć reaguje jedynie na rożne wersje jednego rozkazu pochodzących logicznie
lub pamięci
z sąsiednich części mikrokomputera
Prześlj dane do tego miejsca z tamtego miejsca bez zmiany zawartości zbioru Rozkazy procesora wchodzące w skład jego listy rozkazów można podzielić na
bitów (jego znaczenie) kilka grup funkcjonalnych, a w każdej z tych grup można wskazać typowe
W systemie mikrokomputerowym pamięć istnieje jako kilka logicznie różnych rozkazy
jednostek (części)
TYPOWE ROZKAZY BSF przeszukiwanie słowa od bitu zerowego w przód w celu określenia pozycji
1, Rozkazy przesłania pierwszego bitu równego 1 ustawia znacznik ZF zajmuje od 6 do35 taktów
a) zwykłe:
MOV– przesłanie : rejestr -> rejestr, rejestr -> pamięć, pamięć -> rejestr BSR – przeszukiwanie od najbardziej znaczącego wstecz w celu określenia
Rozkaz ten nie ustawia znaczników, zajmuje 1 takt (wyjątkowo przesłania do/z pozycji pierwszego bity równego 1 ustawia znacznik ZF zajmuje do 7 do 72
rejestrów sterujących CR0, CR2, CR3, CR4 i rejestrów uruchomieniowych DR0- taktów
DR7, zajmują kilkanaście taktów) TEST porównanie logiczne dwóch argumentów (operatora AND z zapisem
XCHG (Exchange) – wzajemna wymiana zawartości dwóch operandów: rejestr- znacznika, ale bez zapisu wyniku) ustawia znaczniki OF, CF,SF, ZF, PF , zajmuje
rejestr lub rejestr-pamięć 1 , 2 takty
Nie ustawia znaczników, zajmuje 2 lub 3 takty
SETA,SETAE,SETB,SETBE,SETC,SETE,SETG,SETGE,SETL, 4) rozkazy przemieszczeń i obrotów
SETLE,SETNA, SETNA, SETNB, SETNBE, SETNC, SETNE, SETNG, SAL/SHL – przesunięcie arytmetyczne w lewo równoważne logicznemu w
SETNGE, SETNL, SETNLE, SETNO, SETNP, SETNS, SETNZ, SETO, lewo/logiczne w lewo argumentu docelowego o liczbę bitów podaną w
SETP, SETPE, SETPO, SETS, SETZ argumencie źródłowym (od 0 do 31) z prawej strony dopisywane są 0 a bit nie
Ustawienie bajta w argumencie docelowym na 1 jeśli spełniony warunek zależny mieszczący się z lewej strony zostaje wpisany do znacznika CF równoważne
od wartości znaczników – zajmuje 1 do 2 taktów pomnożeniu przez 2n, ustawia znaczniki OF,CF, ZF PF, SF – zajmuje od 1 do 4
b) stosowe taktów
PUSCH – dekrementacja wskaźnika stosu ESP o liczbę bajtów do odłożenia, SAR przesunięcie arytmetyczne argumentu docelowego w prawo o liczbę bitów
odłożenie arg. na wierzchołek stosu, nie ustawia znaczników, zajmuje 1 takt (od 0 do 31) daną w argumencie źródłowym, równoważne podzieleniu 2n, ustawia
POP – przesłanie z wierzchołka stosu do argumentu rozkazu, inkrementacja znaczniki OF,CF, ZF PF, SF – zajmuje od 1 do 4 taktów
wskaźnika stosu ESP o liczbę zdjętych bajtów, zajmuje 1 takt w przypadku trybu SHR przesunięcie logiczne argumentu docelowego w prawo o liczbę bitów (od 0
rejestrowego, a 3 takty gdy argument w pamięci lub rejestrze segmentowym do 31) dane w argumencie źródłowym, z lewej strony zostają dopisane 0 , bit nie
c) Specjalne mieszczący się z prawej zostaje wpisany do znacznika CF, ustawia znaczniki OF,
LGDT/LIDT – ładowanie rejestru globalnej tablicy deskryptorów /tablicy CF ,ZF, PF, SF, zajmuje od 1 do 4 taktów
deskryptorów przerwań – zajmuje 6 taktów SHLD/SHRD przesunięcie arg. Docelowego pierwszego złożonego z drugim w
LLDT/SLDT – ładowanie zapisane w pamięci rejestru lokalnej tablicy lewo/w prawo o liczbę bitów zawartą w argumencie źródłowym , ustawia
deskryptorów zajmuje 9 taktów / 2 takty znaczniki CF, SF,ZF, PF , zajmuje 4,5 taktów
SGDT/SIDT – przesłanie zawartości rejestru globalnej tablicy deskryptorów RCL/RCR/ROL/ROR obrót arg. Docelowego o liczbę bitów podaną w
/tablicy deskryptorów przerwań IDTR (6 bajtów) do pamięci pod adres podany w argumencie źródłowym
argumencie - w lewo/w prawo razem ze znacznikiem CF
LMSW – załadowane słowa stanu maszyny w rejestrze CR0 – zajmuje 8 taktów - w lewo/w prawo bez znacznika CF /
ustawia znaczniki OF, CF , zajmuje od 1 do kilkudziesięciu taktów
2. Rozkazy arytmetyki całkowitoliczbowej
ADD – dodanie dwóch argumentów, ustawia znaczniki OF, SF, ZF, AF, CF, PF, 5. Rozkazy sterowania
zajmuje 1, 2 lub 3 takty a) sterowanie programem
XADD - przepisanie argumentu docelowego do źródłowego i umieszczenie sumy JMP skok bezwarunkowy, zajmuje od kilku do kilkudziesięciu taktów
w argumencie docelowym ustawia znaczniki OF, SF, ZF, AF, CF, PF, zajmuje 3, JA, JNBE, JAE , JNB, JB, JNAE, JBE, JNA, JC, JCXZ, JE, JECXZ, JZ,
4 takty JNC, JNE, JNZ, JNP, JPO, JP, JPE, JG, JNLE, JGE, JL , JNGE, JLE, JNG,
ADC dodanie dwóch argumentów plus flaga CF, ustawia znaczniki OF, SF, AF, JNO , JNS, JNZ, JO, JS –skoki warunkowane różnymi warunkami opartymi na
CF, PF, zajmuje 1, 2 lub 3 takty wartościach znaczników , zajmują 1 takt, wyjątkowo JCXZ , JECXZ 6 , 5 taktów
INC zwiększenie argumentu o 1 ustawia znaczniki OF, SF, ZF, AF, PF, zajmuje 1 b) podprogramy i przerwania
lub 3 takty CALL skok do podprogramu , zajmuje od kilku do kilkudziesięciu taktów ,
DEC zmniejszenie argumentu o 1 ustawia znaczniki OF, SF, ZF, AF, PF, zajmuje zależnie od rodzaju argumentu który jest adresem bliskim lub dalekim.
1 lub 3 takty RET powrót bliski lub daleki z podprogramu ze zdjęciem ze stosu wskaźnika
SUB odjecie argumentu źródłowego od docelowego umieszczenie wyniku w programu EIP , zajmuje od 2 do 23 taktów
argumencie docelowym ustawia znaczniki OF, SF, ZF, AF, PF, CF, zajmuje 1, 2 IRET/IRETD powrót/ daleki powrót z podprogramu z przywróceniem stanu EIP ,
lub 3 takty CS , EFL, AGS ze stosu
SBB odjecie od argumentu docelowego sumy argumentu źródłowego i CF INT przerwanie programowe (wywołanie podprogramu obsługi przerwania),
ustawia znaczniki OF, SF, ZE, AF, PF, CF zajmuje 1 ,2 lub 3 takty zajmuje kilkanaście lub kilkadziesiąt taktów
CMP porównanie argumentów (wykonanie odejmowania argumentu docelowego INTO wywołanie podprogramu obsługi wyjątku przy nadmiarze (jeżeli znacznik
od źródłowego, wynik nie jest zapisywany) , ustawia znaczniki OF, SF, ZF, AF, OF =1)
PF, CE, zajmuje 1 lub 2 takty c) operacje na znacznikach
NEG zmiana znaku argumentu na przeciwny, ustawienie OF, SF, ZF, PF, CE, STC/CLC/CMC ustawienie/zerowanie/negowanie znacznika przesunięcia
zajmuje 1 lub 3 takty STD ustawienie znacznika kierunku danych DF
MUL mnożenie dwóch argumentów bez znaku zmienia znaczniki OF, CF, STI ustawienie znacznika odblokowania przerwań IF
zajmuje 10 lub 11 taktów CLD/STD ustawienie znacznika kierunku danych DF na 0/1, dane będą ustawiane
IMUL mnożenie dwóch argumentów ze znakiem zmienia znaczniki OF CF w kierunku rosnących/malejących adresów
zajmuje 10 lub 11 taktów CLI ustawienie znacznika IF zezwolenia na przerwanie, na 0
DIV dzielenie całkowite z resztą dla dwóch argumentów bez znaku iloraz i reszta d)sterowanie systemem
w odpowiednich rejestrach, nie zmienia znaczników, zajmuje 17,25 lub 41 taktów HLT zatrzymanie procesora, rozkazy nie są realizowane wymaga restartowania
zależnie od rozmiaru argumentów lub przerwania priorytetowego
IDIV dzielenie całkowite z resztą dla dwóch argumentów ze znakiem , iloraz i WAIT wprowadzenie w stan oczekiwania do chwili pojawienia się sygnału na
reszta w odpowiednich rejestrach, nie zmienia znaczników , zajmuje 22,30 lub 46 odpowiedniej końcówce
taktów NOP rozkaz pusty , zajmuje 1 takt , nie jest wykonywana żadna operacja poza
zwiększeniem licznika programu o 1
3. Operacje bitowe RSM wznowienie pracy z trybu zarządzania systemem zajmuje 83 takty
a) Operacje logiczne INVD opróżnienie pamięci podręcznej , zajmuje 15 taktów
NOT – negacja boolowska bitów dwóch arg., nie ustawia znaczników, zajmuje 1 INYLPG opróżnieni pamięci TLB, zajmuje 25 taktów
lub 3 takty VERR.VERW sprawdzenie segmentu przed odczytem/zapisem, ustawia znacznik
AND – iloczyn boolowski bitów dwóch argumentów, ustawia znaczniki OF, CF, ZF zajmuje 7 taktów
SF, ZF, PF – zajmuje 1 lub 2 takty
OR – suma boolowska bitów dwóch argumentów, ustawia znaczniki OF, CF, SF, 6. Rozkazy wejścia- wyjścia
ZF, PF, zajmuje 1 lub 3 takty IN przeniesienie bajta lub słowa z portu wejściowego o numerze podanym w
XOR alternatywa wykluczająca bitów dwóch argumentów, ustawia znacznik OF, argumencie źródłowym do miejsca przeznaczenia podanego w argumencie
CF, SF, ZF,PF , zajmuje 1,2 lub 3 takty docelowym zajmuje 7 lub21 taktów
INS/INSB/INSW/INSD przeniesienie bajta, słowa, podwójnego słowa z portu
b) Operacje na bitach wejściowego o numerze podanym w rejestrze DX do miejsca przeznaczenia
określonego przez adres ES EDI i odpowiednie zwiększenie EDI, liczbę
powtórzeń określa ECX , zajmuje 7 lub 21 taktów
OUT przeniesienie bajta lub słowa z miejsca określonego w argumencie
źródłowym do portu o numerze określony w argumencie docelowym
OUTS/OUTSB/OUTSW/OUTSD przeniesienie bajta/słowa/podwójnego słowa z
miejsca przeznaczenia określonego przez adres ES:EDI do portu wejściowego o
numerze podanym w rejestrze DX i odpowiedni zwiększenie EDI liczbę
powtórzeń określa ECX, zajmuje od 12 do 27 taktów

7. Rozkazy konwersji i translacji


CBW konwersja bajta na słowo (16b), zajmuje 3 takty
CWDE konwersja słowa (16b) na podwójne słowo (32b), zajmuje 3 takty
CWD konwersja słowa (16b) na podwójne słowo (32b), zajmuje 2 takty
CDQ konwersja podwójnego słowa (32b) na poczwórne słowo (64b), zajmuje 2
takty
BSWAP konwersja reprezentacji grubo końcowej na cienko końcową i odwrotnie
, tzn, odwrócenie kolejności bajtów w 32 bitowym słowie, nie ustawia
znaczników, zajmuje 1 takt

TYPY DANYCH
Jeżeli dany typ danych ma być obsługiwany przez określony rozkaz, to musi być
on zaimplementowany sprzętowo
Dane liczbowe(numeryczne) składają się z danych całkowitych i
zmiennoprzecinkowych
Liczby całkowite mogą być liczbami ze znakiem lub bez znaku
Liczby te mogą mieć zadeklarowaną różną długość, np. w C++ liczby całkowite
mogą być typu: short (16b), int (długość słowa maszynowego) lub long (32b)
Liczby zmiennoprzecinkowe zajmują 32 .... 128 b
Często jest tak, że w danej architekturze zbioru rozkazów występują osobne
instrukcje dla danych o różnej długości, np. 16 bitowe wartości całkowite mogą
być obsługiwane przez jedną a 32 bitowe przez drugą wersję rozkazu MOVE
Nieliczbowe typy danych:
- łańcuchy (bajtów, bitów, słów, cyfr, symboli)
- wartości boolowskie
- wskaźniki
Instrukcje przeprowadzające operacje na łańcuchach wykonują zazwyczaj
następujące operacje:
- kopiowanie , przesuwanie, przeszukiwanie , modyfikowanie znaków
Wartości boolowskie mogą przyjmować wartość prawdy lub fałszu
Wskaźniki (tak naprawdę) są adresami komórek w pamięci i pomimo iż mają one
postać liczb, są one traktowane w inny sposób niż liczby całkowite i
zmiennoprzecinkowe
Procesory rodziny x86 bezpośrednio wspierają (wykorzyst. w charakt. operandów)
- liczby całkowite, łańcuchy, wskaźniki, liczby w zapisie zmiennoprzecinkowym
W rodzinie procesorów 80x86 przyjęto, że słowa są zapisywane w dwu (lub
więcej) przyległych komórkach (bajtach) pamięci, zaczynając od młodszego.
Adres słowa – w takim zapisie, jest adres jego młodszego bajta
Słowa podwójne zapisuje się w czterech przyległych bajtach, znowu – jednak
zaczynając od młodszego bajta, adres którego jest adresem słowa podwójnego
Ten sposób adresowania nazywany jest – Litte-Endian Memory Format. Bit – jednostka informacji. Bity w pamięci zadaje (wyznacza) się poprzez bazę
W innych rodzinach procesorów stosuje odwrotny porządek (kolejność) (adres słowa) i przesunięcie (numer bitu w słowie)
adresowania – Big Endian Memory Format w którym adresem słowa (słowa Pole bitów (bit field) – grupa do 32 przyległych bitów zajmujących nie więcej niż
podwójnego) jest adres jego starszego bajtu, a młodsze bajty znajdują się w 4 bajty.
komórkach o kolejnych adresach . Łańcuch bitów (big string) zbiór przyległych bitów o długości do 4 Gbit
Do wzajemnego przekształcania formatów słowa służy instrukcja XCHG, słowa Bajt – 8 bitów
podwójnego BSWAP (486+) Liczba bez znaku – bajt/słowo/podwójne słowo/poczwórne słowo (unsigned
Na rys przedstawiono formaty danych, przetworzonych przez stałoprzecinkowy Byte/ word/double worde/quade Word) 8/16/32/64 bity
blok ALU wszystkich 32 bitowych procesorów. Liczby całkowite ze znakiem – bajt/słowo/podwójne słowo/poczwórne słowo
Wyjątkowe znaczenie najstarszego bitu(znak) jest znacznikiem liczby ujemnej,
którą zapisuje się w kodzie uzupełnieniowym.
Liczby dziesiętne kodowane dwójkowo – (BCD – binary coded decimal)
a) 8-bitowe upakowane (packed BCD), dwie cyfry w jednym bajcie(uważa się, że
te liczby są dodatnie)
b) 8-bitowe nieupakowane (unpacked BCD), jedna cyfra w jednym bajcie
(znaczenie bitów 7:4 przy dodawaniu i odejmowaniu nieistotne, przy mnożeniu i
dzieleniu powinny być zerowane (mieć wartość 0000)
Łańcuch bitów, bajtów, słów i słów podwójnych (bit string , byte string, Word
string, double word string) o długości do 4 Gbajt
Wskaźniki:
a) długi wskaźnik (indeks) (48 bitów) – 16-bitowy selektor (lub segment) i 32-
bitowe przesunięcie
b) krótki wskaźnik (indeks) – 32-bitowe przesunięcie
c) wskaźnik (32 bitowy jedyny typ wskaźnika dla 8086 i 80286) – 16bitowy
selektor (lub segment) i 16-bitowe przesunięcie
16-bitowe procesory z przedstawionych typów danych nie wspomagają
przetwarzania poczwórnych słów wszystkich typów, pól i łańcuchów bitów,
łańcuchów słów podwójnych, krótkich i długich wskaźników
Liczby w formacie zmiennoprzecinkowym i upakowane 80-bitowe BCD – liczby, Natomiast hasło rozkaz zwykle rozumie się jako pewnego typu operację
przetwarzane są przez bloki FPU procesorów klasy 486+, jak również przez wykonywaną przez procesor
koprocesory 8087/287/387. Bardzo często pojęcia te są synonimiczne, stąd też użyte hasła instrukcja jako
Upakowane 64-bitowe i 128-bitowe dane przetwarzane są przez procesory z hasło rozkazu w kontekście języka „asembler” jest tylko pewnym brakiem
MMX i SSE. Formaty danych przetwarzanych przez bloki FPU/MMX i XMM precyzji wywodzącej się raczej z przyzwyczajeń językowych aniżeli z
przedstawiono na rys niedookreślenia pojęć

FORMATY ROZKAZU
Rozkazy mikroprocesora x86 mogą zawierać od 1 do 16 bajtów
Jednobajtowe to zwykle rozkazy sterujące znacznikami lub danymi zawartymi w
rejestrach wewnętrznych procesora
Rozkazy wielobajtowe dotyczą operacji dwuargumentowych
Kod operacji jest zawarty w 6 najbardziej znaczących bitach (7-2) pierwszego
bajta rozkazowego
Bit 1 pierwszego bajta jest opisywany jako D, S, V lub Z

Liczby rzeczywiste w formacie zmiennoprzecinkowym:


a) pojedynczej precyzji: 32bity, 23 bity – mantysa, 8 bitów – wykładnik
b) podwójnej precyzji: 64bity, 52 bity – mantysa, 11 bitów – wykładnik
c) podwyższonej precyzji: 80bitów, 64 bity – mantysa, 15 bitów – wykładnik
80b upakowane liczby dziesiętne kodowane dwójkowo 18 cyfr dzies. i znak.
Liczby rzeczywiste upakowane pojedynczej precyzji w formacie
zmiennoprzecinkowym – przetwarzane przez blok XMM
Liczby całkowite upakowane, ze znakiem i bez znaku, przetwarzane przez
blok MMX
a) upakowane bajty – 8 bitów
b) upakowane słowa – 4 słowa
c) upakowane podwójne słowa – 2 podwójne słowa
d) poczwórne słowo – jedno słowo
Dla 16-bitowych procesorów – wszystkie formaty liczb przetwarzane przez bloki
MMX i XMM były niedostępne
Nowa generacja rozszerzeń została wprowadzona wraz z procesorem P4 Ich
koncepcja jest analogiczna jak w MMX i SSE, tzn. poszerza środowisko działania
procesora o nowe typy danych i nowe rozkazy (nie narusza zgodności w dół)
Instrukcje SSE2 operują na nowych typach danych, jednej zmiennoprzecinkowej i
4 stałoprzecinkowych

Wskaźnik D – określa kierunek przesyłania danych


- 0 – wynik operacji jest przesyłany z rejestru do pamięci (wskazanych przez bity
0, 1 i 2 drugiego bajta)
- 1 – wynik operacji jest przesyłany z pamięci do rejestru (wskazywanego przez
bity 3,4 i 5 drugiego bajta)
Wskaźnik S – interpretujemy łącznie z W – bit 0 pierwszego bajta dla
adresowania natychmiastowego
S W =01 oznacza , że trzeci i czwarty bajt rozkazu to 16 bitowy argument
SW = 11oznacza że trzeci bajt jest argumentem jednobajtowym dla operacji
wykonywanych na słowach dwubajtowych (np. dodawanie bajta trzeciego do
zawartości rejestru 16-bitowego)
Przez hasło instrukcja zwykle rozumie się polecenie, komendę, użytą w
Wskaźnik W (Word) określa długość słowa (operanda) pobranego do operacji
kontekście danego języka programowania
- 0 – wskazuje operacje na słowie jedno-bajtowym
- 1 – wskazuje operacje na słowie o długości dwu bajtów
Wskaźnik V jest interpretowany jako parametr przesunięcia w, rozkazach
przesuwania:
- 0 – oznacza jedno przesunięcie
- 1 – liczba przesunięć jest zapisana w rejestrze CL
Wskaźnik Z (zero) występuje tylko w jednobajtowym rozkazie REP (repetycja)
deklarującym powtarzanie operacji:
- 0 – powtarzanie odbywa się aż do chwili, gdy znacznik Z (w resestrzze REG – ta grupa bitów określa jeden z ośmiu rejestrów (w zależności od wartości
znaczników) osiągnie stan 1 wskaźnika W), w których umieszczony jest operand danej operacji
- 1 – powtarzanie do czasu gdy znacznik Z osiągnie stan 0 - W = 0 – są to 8 bitowe rejestry: AL., AH, BL, BH, CL , CH, DL, DH
- W = 1 – są to 16 bitowe AX, BX, CX , DX, SP, BP, SI, DI
ZNACZENIE POSZCZEGÓLNYCH PÓL ROZKAZU
Jeśli rozkaz jest więcej niż jednobajtowy, to drugi bajt rozkazu najczęściej określa R/M – ta grupa bitów określa rejestry adresujące – w zależności od wartości grupy
sposób adresowania argumentów (rys1) MOD:
Bajt ten zawiera 3 grupy bitów: - MOD != 11 – mogą to być rejestry BX,BP,SI,DI,BP+DI,BP+SI, BX+DI, BX+SI
- MOD = 11 – wówczas R/M określa rejestr (jak REG), do którego będzie
1. MOD – 2 bitowa grupa – określa tryb adresowania, tzn czy drugi argument
znajduje się w komórce pamięci czy w rejestrze (tab 2) przesyłany wynik operacji
2. REG – 3bitowa grupa – określa wybór rejestru lub rozszerzenie kodu, Obok opisanego formatu występują także rozkazy jednobajtowe, czego
wskazuje rejestr zawierający pierwszy argument w operacjach przykładem może być rozkaz XCHG, tj, wymiany zawartości akumulatora z
dwuargumentowych (tab1), w rozkazach z adresowaniem natychmiastowym wybranym rejestrem
3. R/M – 3 bitowa grupa – wybór rejestru dla danej lub adresu, wskazuje rejestr W kodzie tego rozkazu 5 bitów stanowi kod operacji, a 3 bity wskazują rejestr,
którego ten rozkaz dotyczy
drugiego argumentu (tab1), lub sposób obliczenia adresu logicznego.
Jeżeli operandy znajdują się w rejestrach procesora MOD =11 , to pola REG i ROZKAZY
R/M stanowią ich adresy y - Ogólna postać rozkazu dodawania ADD
rozważmy rozkaz: ADD CX, DX
- umieszcza 16 bitową sumę 16b zawartości rejestrów CX i DX w rejestrze CX
oraz rozkaz: ADD CH, DL
- umieszcza 8 bitową sumę zawartości rejestrów CH i DL w rejestrze CH
Możliwe są różne formy rozkazu dodawania ADD procesorów x86 z użyciem
wariantów wprowadzonych przez projektanta procesora. Należą do nich:
- W – argument o długości: a) słowa b) bajta
- D – wyniki: a) w pamięci b) w rejestrze
- MOD – obydwa argumenty: a) w rejestrach b) jeden w pamięci bez przesunięcia
c) jeden w pamięci z przesunięciem d) jeden w pamięci z przesunięciem ze
znakiem o długości bajta e) jeden w pamięci z przes. bez znaku długości słowa
- REJ (REG) – argument znajduje się w jednym z rejestrów
- R/M jeśli: a) R – argument w jednym z rejestrów b) M – to oblicza się
efektywny adres argumentu, używając jednego z 8 trybów adresowania
Istnieje zatem przynajmniej 2 (bajt/słowo) x 3 (przesunięcie) x 8 (trybów
adresowania) x 3 (pam  rej/rej  pam/rej rej) = 144 różnych formatów
zawartych w jednej ogólnej postaci rozkazu dodawania ADD
Należy podkreślić, że wszystkie rozkazy z dwoma wskazanymi argumentami,
takie jak rozkaz dodawania ADD procesorów x86 mogą być jedynie trzech typów
1) [rejestr 1]  [rejestr1 ] + [ rejestr 2]
2) [rejestr ]  [rejestr1 ] + [ komórka pamięci]
3) [komórka pamięci ]  [komórka pamięci ] + [ rejestr]
Korzystając z tab6 można określić
a) 72 odmiany rozkazu dodawania ADD słów
b)72 odmiany rozkazu dodawania ADD bajtów

Jeżeli jeden z operandów znajduje się w pamięci, to pola MOD i R/M określają
jego adres (tab 3)

Odpowiednio do wybranego trybu adresacji (MODE) pole R/M koduje sposób


wyznaczania adresu efektywnego w adresie logicznym rozkazu (tab 2)
Trzeci i czwarty bajt rozkazu (rys1) zawierają przemieszczenie lub dane
Piąty i szósty zawierają dane odpowiednio do rodzaju rozkazu, tak jak to wynika z
zasad kodowania w polach KOD, D, W, MOD, REG i R/M
Lista rozkazów procesorów x86 zawiera także rozkazy z argumentem
natychmiastowym umieszczonym bezpośrednio po kodzie operacji (tab 4)

You might also like