Projekt AK


Sprawozdanie z projektu
zaliczeniowego
Projekt z przedmiotu  Architektury systemów komputerowych
Wydział Fizyki Matematki Informatyki
kierunek Informatyka
Grupa 22
Karolina Jopek i Katarzyna Jaruga
Zadanie numer 1 :
Napisz program w języku asemblera, dla procesora dostarczonego na laboratorium, który
będzie ralizował poniższe operacje dla liczb rzeczywistych w reprezentacji
zmiennoprzecinkowej.
 dodawanie
 odejmowanie
 mnożenie
 porównywanie
Liczby zmiennoprzecinkowe sÄ… komputerowÄ… reprezentacjÄ… liczb rzeczywistych zapisanych w
formie wykładniczej (naukowej). Aby uprościć arytmetykę na nich, przyjęto ograniczenia
zakresu mantysy i eksponentu oraz wprowadzono inne założenia, ktore reguluje norma IEEE
754 (dla liczb zapisanych w kodzie dwojkowym). LiczbÄ™ zapisuje siÄ™ jako ciÄ…g zer i jedynek
przyjmując umowny podział na  pola :
S  znak, jest zawsze jednobitowy i ma wartość 0 jeśli liczba jest dodatnia lub 1 jeśli jest ujemna
E  wykładnik (inaczej: eksponent, cecha), ma długość zależną od długości całej liczby i
kodowane jest w kodzie 2k-1-1
M  moduł (inaczej mantysa) ułamka. Ma wartość z przedziału [1,2). Zapisuje się go bez
poprzedzającej go jedynki z kropką (tzw. bit ukryty). Innymi słowy, zapisujemy jedynie część
ułamkową modułu przyjmując, że zawsze (pomijając wyjątki, o ktorych pozniej) część
całkowita wynosi 1.
Bity specjalne występują jedynie w wewnętrznej reprezentacji liczby w jednostce
zmiennoprzecinkowej i wykorzystywane są do zniwelowania efektu utraty dokładności przy
wykonywaniu działań, przez zaokrąglenie.
Zarowno liczba wejściowa jak i wyjściowa takiego układu nie posiada tych bitow. Oznacza to,
że liczby 32/64/128 bitowe, w jednostce zmiennoprzecinkowej, po uzupełnieniu bitami
specjalnymi, maja długość odpowiednio 35/67/131 bitow.
Karolina Jopek i Katarzyna Jaruga
Wartość reprezentowaną przez liczbę określa się wg wzoru:
-1
x=S Å"MÅ"2E
Pisząc nasz program w asemblerze, korzystamy z grupy rejestrów ogólnego przeznaczenia.
Jak sama nazwa wskazuje, służą do wykonywania przeróżnych, nieokreślonych z góry
czynności, takich jak np.:
przechowywanie operandów i wyników obliczeń arytmetycznych i logicznych
służą jako liczniki (głównie rejestr ECX)
funkcjonują jako przechowalnie argumentów
Rejestry ogólnego przeznaczenia
8 bitów
AH AL BH BL CH CL DH DL
AX BX CX DX SP BP SI DI
EAX EBX ECX EDX ESP EBP ESI EDI
EAX - używany głównie w czasie operacji arytmetycznych
EBX - rejestr bazowy, wraz z rejestrem segmentowym DS tworzą wskaznik na przestrzeń
danych
ECX - rejestr służący głownie jako licznik w zapętlonych operacjach
EDX - rejestr danych, używany do operacji arytmetycznych oraz obsługi wejścia-wyjścia
ESP - wskaznik wierzchołka stosu
EBP - wskaznik do danych w segmencie stosu
ESI - rejestr indeksowy, wskaznik zródła
EDI - rejestr indeksowy, wskaznik przeznaczenia
Jak widać powyżej, wszystkie 8 powyższych rejestrów dzieli się na mniejsze, rejestry składowe.
Zmodyfikowanie wartości rejestru składowego modyfikuje kawałek rejestru, którego jest
częścią (reszta bitów rejestru-rodzica pozostaje bez zmian).
Podział ten wywodzi się z procesorów 8086, gdzie rejestry procesora były 16-bitowe i nazywały
się kolejno AX, BX itd. Umożliwienie korzystania z tych rejestrów wiąże się z zapewnieniem
kompatybilności starszych programów z nowymi procesorami. Tworząc procesory z 32-
bitowymi rejestrami dopisano do ich nazw literkÄ™ E (Extended).
Przejdzmy teraz do cżęści technicznej naszego projektu.
Do wykonania tego projektu użyliśmy assemblera x86(32 bity) dla linuxa. Jest on wyposażony
w koprocesor który ma zaimplementowane operacje na liczbach zmiennoprzecinkowych. Aby
skompilować należy przez nasm zalinkować go do gcc:
Karolina Jopek i Katarzyna Jaruga
nasm -f elf -o zad1.o zad1.asm && gcc -s -o zad1 zad1.o
W celu uruchomienia programu wpisujemy ./zad1. Wszystkie obliczenia sÄ… wykonywane na
stosie koprocesora. Dopiero po ich zakończenieu są z niego ściągane i wypisywane na ekran.
Zadanie numer 6:
Napisz program w języku asemblera, dla procesora dostarczonego na laboratorium, który
będzie obliczał następujące funkcje:
 Cos(x)
 Arc cos(x)
Podobnie jak w przypadku pierwszego programu wykorzystujemy assemblera x86(32 bity) dla
linuxa.
Aby poprawnie skompilowac program wpisujemu komendÄ™:
nasm -f elf -o zad6.o zad6.asm && gcc -s -o zad6 zad6.o
Następnie, aby uruchomić program wpisujemy ./cos [x] [n] z dwoma argumentami. Przy czym
pierwszy argument oznacza liczbę  x z jakiej ma być wyliczony cosinus, a drugi argument  n
określa ilość wyrazów z wzoru Taylora do których funkcja ma być liczona. Na przykład ./cos 1 6
Wzór przedstawia rozwinięcie w szereg Taylora dla funkcji cos (x):
Wszystkie obliczenia zostały wykonywane na stosie koprocesora. Dopiero pod koniec wyniki są
z niego ściągane i wypisywane na ekran.
Karolina Jopek i Katarzyna Jaruga


Wyszukiwarka

Podobne podstrony:
Tematy projektów AK
Projekt pracy aparat ortodontyczny ruchomy
Projekt mgif
projekt z budownictwa energooszczednego nr 3
prasa dwukolumnowa projekt
4 projekty
Cuberbiller Kreacjonizm a teoria inteligentnego projektu (2007)
Projektowanie robót budowlanych w obiektach zabytkowych
PROJEKT FUNDAMENTOWANIE 2

więcej podobnych podstron