You are on page 1of 3

Zada ca 2 Arhitektura ra cunara

April 2012

Sadr zaj
1 Problem 1 2 Problem 3 3 Problem 4 4 Problem 5 2 2 3 3

Problem 1
Napisati MIPS program koji za zadane karaktere (ASCII kodove) u nizu znakovi provjerava da li isti postoje u stringu tekst i rezultat upisuje u niz test. Provjeru postojanja znaka u stringu realizovati kao asemblersku proceduru (funkciju) koja bi u C-u imala deklaraciju: int postoji_znak(char *s, char c);

Funkcija vra ca 0 ako znak c ne postoji u stringu s a 1 ako postoji. String zadan pomo cu .asciiz direktive je NULL-terminiran. Program i funkciju provjeriti na sljede cim podacima: .data tekst: .asciiz "Ovo je neki tekst KOJI SLUzi za prOBU. 1 2 3 itd." znakovi: .byte a, O, A, 1, 32, e, 98 nznakova: .byte 7 test: .word 0:20

Problem 2
Data je rekurzivna funkcija fr(n)=(1+2+3+...+n)*fr(n-2)

uz fr(0)=1 i fr(1) = 1. Izra cunati vrijednost funkcije za prvih 20 prirodnih brojeva i rezultate smje stati u niz rezultat. Za sumu cijelih brojeva 1+2+3+...+n koristiti funkciju suma_n koju takoe treba realizovati. Za funkciju suma_n odabrati potreban broj i tip ulaznih i izlaznih parametara.

Problem 3
Date su sljede ce lokacije:

.data bubroj: .byte 178 wbroj: .word 393 fbroj1: .float 388.444 fbroj2: .float -3.625 frezultat: .float 0.0

# # # # #

unsigned signed sp fp broj sp fp broj sp fp broj

Napisati MIPS program koji za gornje podatke ra cuna izraz: frezultat = |fbroj1*fbroj2 - 10.5| / (bubroj * 32 + wbroj*7*fbroj2) Na datim lokacijama se mogu nalaziti druge vrijednosti ali su uvijek datog tipa.

Problem 4
Zadana je funkcija float stepen(float x, int n); Funkcija ra cuna n-ti stepen broja x. Napisati cijelu funkciju u MIPS asembleru. Napisati i kompletan program u kome treba testirati pozivanje tra zene funkcije. Voditi ra cuna da n mo ze biti pozotovan i negativan cijeli broj. Realizovati dvije varijante funkcije. U jednoj realizaciji, funkciju realizovati iterativno, a u drugoj rekurzivno. Debagirati program i pratiti promjene registara te promjene na stacku.

Problem 5
U MIPS asembleru napisati funkciju koja bi u C-u imala deklaraciju: float summinmax(float *niz, int n, float *min, float *max); Funkcija prihvata adresu po cetka niza oat brojeva, broj elemenata niza, te adrese lokacija na koje treba smjestiti najmanju i najve cu vrijednost elemenata niza. Funkcija vra ca sumu svih elemenata zadanog niza. Napisati i kompletan program u kome treba testirati pozivanje i ispravnost tra zene funkcije! Rok za izradu zada ce je 11.05.2012.

You might also like