Zespół: PT/17/TP Wrocław, 17.06.2010
Elżbieta Tchorowska, 171067
Konrad Kukulski, 163930
Ocena:
Oddano:
MMX.
Sprawozdanie z laboratorium z przedmiotu „Architektura Komputerów”
Rok. Akadem. 2009/2010, Kierunek: INF
PROWADZĄCY:
Mgr inż. Mariusz Czapski
Spis treści:
Cel ćwiczenia
Celem ćwiczenia było zapoznanie się z technologią MMX. Zadanie polegało na wczytaniu obrazka z rozszerzeniem *.bmp oraz dokonanie na nim przekształceń, jak odbicie lustrzane czy rozmycie.
Algorytm
Lustrzane odbicie otrzymujemy za pomocą odwrócenia macierzy zawierającej bajty wczytanego obrazka i zapisanie jej jako obraz wynikowy.
Funkcja w C
Wywołanie funkcji C wygląda następująco:
Kod as
Wnioski
Zadany program działa poprawnie. Wynikiem jest obrazek lustrzanie odbity.
Strona 1 z 3
movb %al, (%edx)
movd %eax, %mm0
movd %edx, %mm3
movd 32(%ebp), %mm0
movq %mm0, %mm3
paddd 12(%ebp), %mm3
movd 36(%ebp), %mm0
paddd 8(%ebp), %mm0
movd %mm0, %eax
movzbl (%eax), %eax
movb %al, (%edx)
movd %eax, %mm0
movd %edx, %mm3
movd 40(%ebp), %mm0
movq %mm0, %mm3
paddd 12(%ebp), %mm3
movd 44(%ebp), %mm3
paddd 8(%ebp), %mm0
movd %mm0, %eax
movzbl (%eax), %eax
movb %al, (%edx)
popl %ebp //ściągnięcie ze stosu ebp
ret
.global filter
.type filter, @function
filter:
pushl %ebp //wczytanie argumentów do
movl %esp, %ebp //rejestru
movd 16(%ebp), %mm0
movq %mm0, %mm3
paddd 12(%ebp), %mm3 //zapamiętuje adres miejsca
movd 20(%ebp), %mm0 //w pamięci tablicy początkowej
paddd 8(%ebp), %mm0 //I docelowej
movd %mm0, %eax //przepisanie wartości z tablicy
movzbl (%eax), %eax //pierwszej do drugiej
movb %al, (%edx)
movd %eax, %mm0
movd %edx, %mm3
movd 24(%ebp), %mm0
movq %mm0, %mm3
paddd 12(%ebp), %mm3 //przepisywanie kolejno czterech
movd 28(%ebp), %mm0 //bajtów odpowiadających za
paddd 8(%ebp), %mm0 //R, G, B oraz alpha.
movd %mm0, %eax
movzbl (%eax), %eax
filter(tab1,tab2,(i*865*3+i)+(j*3)+54,(i*865*3+i)+(865*3)-(j*3)+54,(i*865*3+i)+(j*3)+1+54,(i*865*3+i)+(865*3)-(j*3)+1+54,(i*865*3+i)+(j*3)+2+54,
(i*865*3+i)+(865*3)-(j*3)+2+54,(i*865*3+i)+(865*3)-(j*3)+54,(i*865*3+i)+(j*3)+54);