Professional Documents
Culture Documents
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
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
Jeżeli jeden z operandów znajduje się w pamięci, to pola MOD i R/M określają
jego adres (tab 3)