1. Zapoznaj się ze strukturą potokową procesora RISCV oraz architekturą wewnętrzną procesora PC 603.
2. Opracuj program obliczający wartość n! Wskazówki:
- wartość n podajemy w lokacji pamięciowej FFFOOOOOh
- wynik pp. wpisuje do lokacji FFFOOOOOh (tej samej)
- aby wprowadzić daną natychmiastową do wybranego rejestru należy użyć instrukcji:
andi OOOOh - dolnej połowy
andis OOOOh - górnej połowy wyzerowanie rejestru ori____- dolnej połowy
oris____- górnej połowy wprowadzenie danej do
wynika to z przyjęcia sztywnego formatu instrukcji (32 bity).
- wykorzystaj rejestr CTR (do bieżącego n i od razu jako licznik pętli)
- do zamknięcia pętli wykorzystać rozkaz bc (kod 16-dziesiętnie, wybierz pole BO, BI-nieistotne, LK=0 (bez śladu), wygodniej jest dla adresacji absolutnej - AA=1 (patrz str. 121-122 xero))
- jeden z rejestrów GPR przeznacz na iloczyn cząstkowy, do mnożenia użyj instrukcji mullw
- jednego z rejestrów użyj jako rejestru adresującego (FFFOOOOOh) - do odczytu n użyj instrukcji lwz, a do zapisu n! - stw
- komunikacja z rejestrami specjalnymi (obok nich jest numer własny -dziesiętnie) poprzez rejestry GPR 0^-31 instrukcjami mtspr, mfspr
- należy pamiętać że GPRO nie może być rejestrem adresującym (jest to adresacja względna zera)
- kody operacyjne podane są w zapisie dziesiętnym - trzeba je zapisać binarnie w normalnym porządku (MSB ... LSB1