projekt z języków asemblerowych

15
PROJEKT Z JĘZYKÓW ASEMBLEROWYCH Operacje na macierzach Marcin Giemza

Upload: guest88add00c

Post on 21-Jul-2015

1.505 views

Category:

Documents


1 download

TRANSCRIPT

PROJEKT Z JĘZYKÓW ASEMBLEROWYCH

Operacje na macierzach

Marcin Giemza

ZAŁOŻENIA PROJEKTU

Wykonywane operacje:

-Dodawanie macierzy

-Odejmowanie macierzy

-Mnożenie macierzy - skalarne

-Mnożenie dwóch macierzy

-Obliczanie wyznacznika macierzy

Operacje matematyczne realizowane za pomocą funkcji asemblerowych

ZAŁOŻENIA PROJEKTU

Język wysokiego poziomu - C++ :

- Interfejs

- Wyświetlanie wyników

- Wczytywanie i zapisywanie do plików

- Sprawdzenie poprawności danych oraz

wykonywalności żądanych operacji

INTERFEJS

INTERFEJS – ZAPIS I ODCZYT Z PLIKÓW

INTERFEJS – OPERACJE DLA 1 MACIERZY

INTERFEJS – OPERACJE DLA 2 MACIERZY

IDEA, ALGORYTMY

- Format plików txt : ilość_wierszy , ilość_kolumn ,

dane - np.:

- 4 5

- -5 1 2 3 4

- 4 4 2 1 3

- 6 2 3 1 -20

- 7 3 2 5 7

Wczytywanie danych do jednowymiarowej tablicy –

łatwiejsza praca w asemblerze

IDEA, ALGORYTMY

Przekazywanie danych – mnożenie

macierzy:

Mnoz_Macierz(TablicaX,TablicaY,TablicaZ,Wiersze_X,Kolumny_X,Wiersze_Y,Kolumny_Y);

extern "C" void __stdcall Mnoz_Macierz(int*,int*,int*,unsigned int, unsigned int,unsigned

int, unsigned int);

Mnoz_Macierz PROC tab1:PTR, tab2:PTR, tab3:PTR, wierszeA:DWORD,

kolumnyA:DWORD, wierszeB:DWORD, kolumnyB:DWORD

IDEA, ALGORYTMY

Przekazywanie danych – wyznacznik

macierzy:

Wyznacznik(Tablica_double,Wiersze_5);

extern "C" void __stdcall Wyznacznik(double*,unsigned int);

Wyznacznik PROC tab1:PTR, rozmiar:DWORD

Procedury dodawania,

odejmowania i mnożenia :

•Rozkazy rozszerzenia MMX

Równoległe obliczenia wielu pól

macierzy wynikowej

Obliczanie wyznacznika :

•zmodyfikowany algorytm Gaussa

•koprocesor arytmetyczny

• obliczenia na liczbach typu

double

TESTOWANIE – PRACA Z DEBUGERREM

NAPOTKANE PROBLEMY

Stworzenie poprawnie działającego projektu - Visual

Obsługa koprocesora –np. przekręcenie się stosu, złe

instrukcje

Literówkę- ebx -> edx

edx=0

Słaba czytelność kodu

QWORD – REAL8

Mała liczba rejestrów

Różnice: Ładowanie danych

Marcin Giemza

DZIĘKUJĘ