Splot z kernelem 3x3 - Marek Bar 33808 / ApplyKernel3x3.sj
wczytaj wartość piksela do r6 spod adresu rO + r3 + r1 wyzeruj 3 najstarsze bity w r6 wczytaj do r7 wartość kernela spod adresu r2 + 8 do r9 dodaj iloczyn r6 * r7
wczytaj wartość piksela do r6 spod adresu rO + r3 wyzeruj 3 najstarsze bity w r6 wczytaj do r7 wartość kernela spod adresu r2 + 7 do r9 dodaj iloczyn r6 * r7
Argumenty funkcji: rO - adres początku obrazu r1 - adres początku tablicy parametrów: szerokość obrazu, wysokość obrazu, rozmiar piksela r2 - adres początku kernela r3 - adres obrazu wyjściowego wczytaj wartość piksela do r6 spod adresu rO + r3 - r1 wyzeruj 3 najstarsze bity w r6 wczytaj do r7 wartość kernela spod adresu r2 + 6 do r9 dodaj iloczyn r6 * r7
zapamiętaj stany rejestrów rO - r15 na stosie
wczytaj wartość piksela do r6 spod adresu rO + r1 wyzeruj 3 najstarsze bity w r6 wczytaj do r7 wartość kernela spod adresu r2 + 5 do r9 dodaj iloczyn r6 * r7
T
przenieś z r3 do r12 adres obrazu wyjściowego
T wypakuj do r3 szerokość obrazu poprzez wczytanie wartości z adresu w r1 i zapamiętaj na stosie
I oblicz szerokość wiersza r5 = r3 * r1 w r1 ustaw adres początkowy piksela do obliczania splotu z kernelem 3x3 oblicz adres ostatniego dozwolonego piksela na którym może zostać wykonany splot z kernelem 3x3 wczytaj wartość piksela do r6 spod adresu rO wyzeruj 3 najstarsze bity w r6 wczytaj do r7 wartość kernela spod adresu r2 + 4 do r9 dodaj iloczyn r6 * r7
koniec
przesuń wskaźnik na następny piksel obrazu wejściowego - rO i obrazu wyjściowego - r12
- odtwórz wartości rejestrów rO - r15
wyzeruj 3 najstarsze bajty rejestru r9 i zapisz w r11 do r9 wczytaj wartość z r11 przesuniętą o 16 bit w lewo do r10 wczytaj wartość z r11 przesuniętą o 8 bit w lewo oblicz r11 = r9 + r10 + r11 zapisz wartość r11 pod adresem z r12
i